srecord RecursiveMatcher(new L matchFunctions) extends IMatchF { *(O... matchFunctions) { addAll(this.matchFunctions, matchFunctions); } bool get(O pat, O real, IMatchF elementMatcher, Map map) { if (eq(pat, real)) true; for (O f : matchFunctions) if (isTrue(callF(f, pat, real, this, map))) true; false; } }