docs: protected void createTraceArrayForParameters() {
          // Static methods don't have an implicit "this" argment so start
          // working with local var 0 instead of 1 for the parm list.
          int localVarOffset = isStatic ? 0 : 1;
          int syntheticArgs = 0;
  
          // Use an heuristic to guess when we're in a nested class constructor.
          // Nested classes that are not static get a synthetic reference to their
          // parent as the first argument.
          if (isConstructor() && getClassAdapter().isInnerClass() && argTypes.length > 1) {
              String className = getClassAdapter().getClassInternalName();
              String ownerName = className.substring(0, className.lastIndexOf("$"));
              if (Type.getObjectType(ownerName).equals(argTypes[0])) {
                  syntheticArgs = 1;
              }
          }
  
          // Build the object array that will hold the input args to the method.
          visitLdcInsn(new Integer(argTypes.length - syntheticArgs));
          visitTypeInsn(ANEWARRAY, "java/lang/Object");
  
          for (int i = syntheticArgs; i < argTypes.length; i++) {
              int j = i + localVarOffset;
  
              visitInsn(DUP);
              visitLdcInsn(new Integer(i - syntheticArgs));
              boxLocalVar(argTypes[i], j, isArgumentSensitive(i));
              visitInsn(AASTORE);
  
              // Local variables can use more than one slot. (DJ)
              // Account for those here by adding them to the local
              // var offset.
              localVarOffset += argTypes[i].getSize() - 1;
          }
      }