final void onDispose(EventContext context, VirtualFrame frame) { try { innerOnDispose(context, frame); } catch (Throwable t) { if (!seenException) { CompilerDirectives.transferToInterpreterAndInvalidate(); seenException = true; } if (binding.isLanguageBinding()) { throw t; } else { CompilerDirectives.transferToInterpreter(); failEventForInstrumentation(binding, "onEnter", t); } } if (next != null) { next.onDispose(context, frame); } }