$ javap -c -p demo.Target (original, as javac produced it; fib and boom only) public static int fib(int); Code: 0: iload_0 1: iconst_2 2: if_icmpge 9 5: iload_0 6: goto 22 9: iload_0 10: iconst_1 11: isub 12: invokestatic #13 // Method fib:(I)I 15: iload_0 16: iconst_2 17: isub 18: invokestatic #13 // Method fib:(I)I 21: iadd 22: ireturn public static void boom(); Code: 0: new #31 // class java/lang/IllegalStateException 3: dup 4: ldc #33 // String boom 6: invokespecial #35 // Method java/lang/IllegalStateException."":(Ljava/lang/String;)V 9: athrow $ javap -c -p demo.Target (naive transform: records on normal return only) public static int fib(int); Code: 0: invokestatic #74 // Method java/lang/System.nanoTime:()J 3: lstore_1 4: iload_0 5: iconst_2 6: if_icmpge 13 9: iload_0 10: goto 26 13: iload_0 14: iconst_1 15: isub 16: invokestatic #13 // Method fib:(I)I 19: iload_0 20: iconst_2 21: isub 22: invokestatic #13 // Method fib:(I)I 25: iadd 26: ldc #76 // String Target.fib 28: invokestatic #74 // Method java/lang/System.nanoTime:()J 31: lload_1 32: lsub 33: invokestatic #82 // Method demo/Timings.record:(Ljava/lang/String;J)V 36: ireturn public static void boom(); Code: 0: invokestatic #74 // Method java/lang/System.nanoTime:()J 3: lstore_0 4: new #31 // class java/lang/IllegalStateException 7: dup 8: ldc #33 // String boom 10: invokespecial #35 // Method java/lang/IllegalStateException."":(Ljava/lang/String;)V 13: athrow $ javap -c -p demo.Target (full transform: plus a catch-all handler) public static int fib(int); Code: 0: invokestatic #74 // Method java/lang/System.nanoTime:()J 3: lstore_1 4: iload_0 5: iconst_2 6: if_icmpge 13 9: iload_0 10: goto 26 13: iload_0 14: iconst_1 15: isub 16: invokestatic #13 // Method fib:(I)I 19: iload_0 20: iconst_2 21: isub 22: invokestatic #13 // Method fib:(I)I 25: iadd 26: ldc #76 // String Target.fib 28: invokestatic #74 // Method java/lang/System.nanoTime:()J 31: lload_1 32: lsub 33: invokestatic #82 // Method demo/Timings.record:(Ljava/lang/String;J)V 36: ireturn 37: astore_3 38: ldc #76 // String Target.fib 40: invokestatic #74 // Method java/lang/System.nanoTime:()J 43: lload_1 44: lsub 45: invokestatic #82 // Method demo/Timings.record:(Ljava/lang/String;J)V 48: aload_3 49: athrow Exception table: from to target type 4 37 37 any public static void boom(); Code: 0: invokestatic #74 // Method java/lang/System.nanoTime:()J 3: lstore_0 4: new #31 // class java/lang/IllegalStateException 7: dup 8: ldc #33 // String boom 10: invokespecial #35 // Method java/lang/IllegalStateException."":(Ljava/lang/String;)V 13: athrow 14: astore_2 15: ldc #90 // String Target.boom 17: invokestatic #74 // Method java/lang/System.nanoTime:()J 20: lload_0 21: lsub 22: invokestatic #82 // Method demo/Timings.record:(Ljava/lang/String;J)V 25: aload_2 26: athrow Exception table: from to target type 4 14 14 any