private void emitSetCallback(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();
  }
private void emitSetCallback(ClassEmitter ce, int[] keys)