static void tryfinally(SkinnyMethodAdapter mv, Runnable codeBlock, Runnable finallyBlock) { Label before = new Label(), after = new Label(), ensure = new Label(), done = new Label(); mv.trycatch(before, after, ensure, null); mv.label(before); codeBlock.run(); mv.label(after); if (finallyBlock != null) finallyBlock.run(); mv.go_to(done); if (finallyBlock != null) { mv.label(ensure); finallyBlock.run(); mv.athrow(); } mv.label(done); }