ifclass F0 static A callFInRealOrMyMC(O realm, F0 f) { ret f == null ? null : f.get(); } endif ifclass F1 static B callFInRealOrMyMC(O realm, F1 f, A a) { ret f == null ? null : f.get(a); } endif ifclass F2 static C callFInRealOrMyMC(O realm, F2 f, A a, B b) { ret f == null ? null : f.get(a, b); } endif ifclass VF1 static void callFInRealOrMyMC(O realm, VF1 f, A a) { if (f != null) f.get(a); } endif static O callFInRealOrMyMC(O realm, O f, O... args) { if (f cast S) { Class mc = getMainClass(realm); if (hasMethod(mc, f, args)) ret call(mc, f, args); } ret callF(f, args); }