srecord RecursiveMatcher(IMatchFunction matchF) implements IMatchFunction { new L matchFunctions; public bool get(O pat, O real, Map map) { if (eq(pat, real)) true; for (O f : matchFunctions) if (callF(f, pat, real, map)) true; false; } }