code: private void createDelegateInitializerCode(ClassMethod classMethod, MethodInformation initializerMethodInfo, int delegateParameterPosition) {
          final CodeAttribute b = classMethod.getCodeAttribute();
          // we need to push all the parameters on the stack to call the corresponding
          // superclass arguments
          b.aload(0); // load this
          int localVariables = 1;
          int actualDelegateParameterPosition = 0;
          for (int i = 0; i < initializerMethodInfo.getMethod().getParameterTypes().length; ++i) {
              if (i == delegateParameterPosition) {
                  // figure out the actual position of the delegate in the local
                  // variables
                  actualDelegateParameterPosition = localVariables;
              }
              Class<?> type = initializerMethodInfo.getMethod().getParameterTypes()[i];
              BytecodeUtils.addLoadInstruction(b, DescriptorUtils.makeDescriptor(type), localVariables);
              if (type == long.class || type == double.class) {
                  localVariables = localVariables + 2;
              } else {
                  localVariables++;
              }
          }
          b.invokespecial(classMethod.getClassFile().getSuperclass(), initializerMethodInfo.getName(), initializerMethodInfo.getDescriptor());
          // if this method returns a value it is now sitting on top of the stack
          // we will leave it there are return it later
  
          // now we need to call _initMH
          b.aload(0); // load this
          b.aload(actualDelegateParameterPosition); // load the delegate
          b.invokevirtual(classMethod.getClassFile().getName(), INIT_MH_METHOD_NAME, "(" + LJAVA_LANG_OBJECT + ")" + BytecodeUtils.VOID_CLASS_DESCRIPTOR);
          // return the object from the top of the stack that we got from calling
          // the superclass method earlier
          b.returnInstruction();
  
      }
docs: When creates the delegate initializer code when the delegate is injected
  into a method.
  <p/>
  super initializer method is called first, and then _initMH is called
  
  @param initializerMethodInfo
  @param delegateParameterPosition
  @return