A query like 

```
sequence by user.name with maxspan=90m
![ authentication where ... ]
[ authentication where ...]
![ authentication where ... ]
[ authentication where ... ]
![ authentication where ... ]
```

can result in a NullPointerException

```
java.lang.NullPointerException: Cannot invoke "org.elasticsearch.xpack.eql.execution.sequence.Match.ordinal()" because the return value of "org.elasticsearch.xpack.eql.execution.sequence.Sequence.matchAt(int)" is null
        at org.elasticsearch.xpack.eql.execution.sequence.TumblingWindow.prepareQueryForMissingEvents(TumblingWindow.java:313)
        at org.elasticsearch.xpack.eql.execution.sequence.TumblingWindow.checkMissingEvents(TumblingWindow.java:219)
        at org.elasticsearch.xpack.eql.execution.sequence.TumblingWindow.payload(TumblingWindow.java:717)
        at org.elasticsearch.xpack.eql.execution.sequence.TumblingWindow.completeBaseCriterion(TumblingWindow.java:499)
        at org.elasticsearch.xpack.eql.execution.sequence.TumblingWindow.baseCriterion(TumblingWindow.java:405)
        at org.elasticsearch.xpack.eql.execution.sequence.TumblingWindow.lambda$advance$6(TumblingWindow.java:356)
```
x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/execution/sequence/Sequence.java
private static final long SHALLOW_SIZE = RamUsageEstimator.shallowSizeOfInstance(Sequence.class);
    private final SequenceKey key;
    private final Match[] matches;
    private int currentStage = 0;
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public Sequence(SequenceKey key, int stages, Ordinal ordinal, HitReference firstHit) {
        Check.isTrue(stages >= 2, "A sequence requires at least 2 criteria, given [{}]", stages);
        this.key = key;
        this.matches = new Match[stages];
        this.matches[0] = new Match(ordinal, firstHit);
    }
    public void putMatch(int stage, Ordinal ordinal, HitReference hit) {
        currentStage = stage;
        matches[currentStage] = new Match(ordinal, hit);
    }
    public SequenceKey key() {