public Collection<T> matchNext(AbstractElement nextElement) {
Pair<List<MatcherTransition>, List<MatcherState>> path = findTransitionPath(lastState, nextElement, false,
true, Sets.<Pair<Boolean, MatcherState>> newHashSet());
if (path == null) {
MatcherState previousState = lastState;
lastState = nfaProvider.getNFA(nextElement);
return patternsForTwoStates(previousState, lastState);
} else {
lastState = path.getFirst().get(path.getFirst().size() - 1).getTarget();
return patternsForTransition(path);
}
}