// No more "magic return type cast" because Java 8 breaks it
sO callF(O f, O... args) ctex {
if (f instanceof S)
ret callMC((S) f, args);
ifclass DynamicCallable
if (f instanceof DynamicCallable)
ret f/DynamicCallable._dyn(args);
endif
ret x30_util.callF(f, args);
}
ifclass F0
static A callF(F0 f) {
ret f == null ? null : f.get();
}
endif
ifclass IF0
static A callF(IF0 f) {
ret f == null ? null : f.get();
}
endif
ifclass F1
static B callF(F1 f, A a) {
ret f == null ? null : f.get(a);
}
endif
ifclass IF1
static B callF(IF1 f, A a) {
ret f == null ? null : f.get(a);
}
endif
ifclass F2
static C callF(F2 f, A a, B b) {
ret f == null ? null : f.get(a, b);
}
endif
ifclass VF1
static void callF(VF1 f, A a) {
if (f != null) f.get(a);
}
endif
static O callMC(S method, O... args) {
ret call(mc(), method, args);
}
static O call(O o) {
ret callF(o);
}
sO call(O o, S method, O... args) {
ret call_withVarargs(o, method, args);
}