void (ClassEmitter ce, int[] keys) { final CodeEmitter e = ce.begin_method(Constants.ACC_PUBLIC, SET_CALLBACK, null); e.load_this(); e.load_arg(1); e.load_arg(0); e.process_switch(keys, new ProcessSwitchCallback() { @Override public void processCase(int key, $Label end) { e.checkcast(callbackTypes[key]); e.putfield(getCallbackField(key)); e.goTo(end); } @Override public void processDefault() { final $Type type = $Type.getType(AssertionError.class); e.new_instance(type); e.dup(); e.invoke_constructor(type); e.athrow(); } }); e.return_value(); e.end_method(); }