There is no easy way to decide whether events can be part of multiple matching sequences or not. Currently, the default is that an event can participate in multiple matching sequences. E.g. if you have the pattern Pattern.<Event>begin("a").followedBy("b") and the input event stream Event("A"), Event("B"), Event("C"), then you will generate the following matching sequences: Event("A"), Event("B"), Event("A"), Event("C") and Event("B"), Event("C").
It would be useful to allow the user to define where the matching algorithm should continue after a matching sequence has been found. Possible option values could be
- from first - continue keeping all events for future matches (that is the current behaviour)
- after first - continue after the first element (remove first matching event and continue with the second event)
- after last - continue after the last element (effectively discarding all elements of the matching sequence)