in spectator-api/src/main/java/com/netflix/spectator/impl/matcher/PatternUtils.java [468:502]
private static boolean containsLookahead(Matcher matcher) {
if (matcher instanceof NegativeLookaheadMatcher) {
return true;
} else if (matcher instanceof PositiveLookaheadMatcher) {
return true;
} else if (matcher instanceof IndexOfMatcher) {
IndexOfMatcher m = matcher.as();
return containsLookahead(m.next());
} else if (matcher instanceof OrMatcher) {
for (Matcher m : matcher.<OrMatcher>as().matchers()) {
if (containsLookahead(m)) {
return true;
}
}
return false;
} else if (matcher instanceof RepeatMatcher) {
RepeatMatcher m = matcher.as();
return containsLookahead(m.repeated());
} else if (matcher instanceof SeqMatcher) {
for (Matcher m : matcher.<SeqMatcher>as().matchers()) {
if (containsLookahead(m)) {
return true;
}
}
return false;
} else if (matcher instanceof ZeroOrMoreMatcher) {
ZeroOrMoreMatcher m = matcher.as();
return containsLookahead(m.repeated()) || containsLookahead(m.next());
} else if (matcher instanceof ZeroOrOneMatcher) {
ZeroOrOneMatcher m = matcher.as();
return containsLookahead(m.repeated()) || containsLookahead(m.next());
} else {
return false;
}
}