protected static class Operation.ForceProgressIterator
The ForceProgressIterator is used to protect against non-termination; specifically,
iterators that return an infinite number of zero-length matches. After getting a
certain number of zero-length matches at the same position, hasNext() returns false.
(Potentially this gives problems with an expression such as (a?|b?|c?|d) that can
legitimately return more than one zero-length match).