static F0 f0(fO f) { if (f instanceof F0) ret (F0) f; if (f cast S) { ifndef callF_legacy fail("callF_legacy"); endifndef ifdef callF_legacy ret mainFunctionToF0((S) f); endifdef } if (f instanceof F0) ret (F0) f; ret new F0 { O get() { ret callF(f); } }; }