srecord RecursiveMatcher(new L matchFunctions) implements IMatchFunction {
  
  *(O... matchFunctions) { addAll(this.matchFunctions, 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;
  }
}