ifclass F0 static <A> A pcallF_typed(F0<A> f) { pcall { ret f?!; } null; } endif ifclass F1 static <A, B> B pcallF_typed(F1<A, B> f, A a) { pcall { ret f?.get(a); } null; } endif ifclass VF1 static <A> void pcallF_typed(VF1<A> f, A a) { pcall { f?.get(a); } } endif static <A> void pcallF_typed(IVF1<A> f, A a) { pcall { f?.get(a); } } static <A, B> void pcallF_typed(IVF2<A, B> f, A a, B b) { pcall { f?.get(a, b); } } sO pcallF_typed(Runnable r) { pcall { r?.run(); } null; } static <A> A pcallF_typed(IF0<A> f) { pcall { ret f?!; } null; } static <A, B> B pcallF_typed(IF1<A, B> f, A a) { pcall { ret f?.get(a); } null; }