static record noeq /*mapMethodLike*/ FunctionCall(O function, O... args) implements Transformable { toString { ret function + "(" + joinWithComma(allToString(args)) + ")"; } public bool equals(O o) { ret o instanceof FunctionCall && eq(function, o/FunctionCall.function) && objectArraysEqual(args, o/FunctionCall.args); } public int hashCode() { ret hashAboutObjects(function, asList(args)); } L args() { ret asList(args); } public Object transformUsing(IF1 f) { ret new FunctionCall(f.get(function), mapObjectArray(f, args)); } }