static void swingAndWait(Runnable r) ctex { if (isAWTThread()) r.run(); else EventQueue.invokeAndWait(r); } static O swingAndWait(final O f) { if (isAWTThread()) ret callF(f); else { final new Var result; swingAndWait(r { result.set(callF(f)); }); ret result.get(); } }