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);
}