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