code: private static void generateDefaultConstructor(ClassWriter cw, Class<?> parentClass,
                                                     String className) {
          MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, // public method
              INIT, // method name
              getDesc(void.class, parentClass), // descriptor
              null, // signature (null means not generic)
              null); // exceptions (array of strings)
  
          mv.visitCode(); // Start the code for this method
  
          // 调用父类构造器
          mv.visitVarInsn(ALOAD, 0); // Load "this" onto the stack
          mv.visitMethodInsn(INVOKESPECIAL, // Invoke an instance method (non-virtual)
              convert(parentClass), // Class on which the method is defined
              INIT, // Name of the method
              getDesc(void.class), // Descriptor
              false); // Is this class an interface?
  
          // 设置字段值，相当于this.target = target;
          mv.visitVarInsn(ALOAD, 0); // 加载this
          mv.visitVarInsn(ALOAD, 1); // 加载参数
          mv.visitFieldInsn(PUTFIELD, convert(className), TARGET_FIELD_NAME,
              getByteCodeType(parentClass));
  
          mv.visitMaxs(2, 1);
          mv.visitInsn(RETURN); // End the constructor method
          mv.visitEnd();
      }
docs: 为类构建默认构造器（正常编译器会自动生成，但是此处要手动生成bytecode就只能手动生成无参构造器了
  @param cw ClassWriter
  @param parentClass 构建类的父类，会自动调用父类的构造器
  @param className 生成的新类名