`forall` stops searching when the predicate is `false`.
But I was mostly speaking about the last else of the last case:

```scala
              } else { // char not in sequence and not to be ignored
                None
```

If if it finds any char not part of the sequence, and not to be ignored, it bails out directly. The iterative version will continue to try to match the sequence, even if a 'bad' character was seen.