There needs to be a way to find out if the end of input was hit by the search
engine in the last match operation performed by a matcher. A boolean method
hitEnd() could be used to offer this information.
When this method returns true, then it is possible that more input
would have changed the result of the last search.
Similarly, a method is needed that returns true if more input could change a
positive match into a negative one. A boolean method requireEnd() could be
used to offer this information.
If this method returns true, and a match was found, then more input could cause
the match to be lost. If this method returns false and a match was found, then
more input might change the match but the match won't be lost.