docs: private static void build3ArgConstructor(final Class< ? > superClazz,
                                               final String className,
                                               final ClassWriter cw) {
          MethodVisitor mv;
          {
              mv = cw.visitMethod( Opcodes.ACC_PUBLIC,
                                   "<init>",
                                   Type.getMethodDescriptor( Type.VOID_TYPE,
                                                             Type.getType( int.class ), Type.getType( Class.class ), Type.getType( ValueType.class ) ),
                                   null,
                                   null );
              mv.visitCode();
              final Label l0 = new Label();
              mv.visitLabel( l0 );
              mv.visitVarInsn( Opcodes.ALOAD,
                               0 );
              mv.visitVarInsn( Opcodes.ILOAD,
                               1 );
              mv.visitVarInsn( Opcodes.ALOAD,
                               2 );
              mv.visitVarInsn( Opcodes.ALOAD,
                               3 );
              mv.visitMethodInsn( Opcodes.INVOKESPECIAL,
                                  Type.getInternalName( superClazz ),
                                  "<init>",
                                  Type.getMethodDescriptor( Type.VOID_TYPE,
                                                            Type.getType( int.class ), Type.getType( Class.class ), Type.getType( ValueType.class ) ) );
              final Label l1 = new Label();
              mv.visitLabel( l1 );
              mv.visitInsn( Opcodes.RETURN );
              final Label l2 = new Label();
              mv.visitLabel( l2 );
              mv.visitLocalVariable( "this",
                                     "L" + className + ";",
                                     null,
                                     l0,
                                     l2,
                                     0 );
              mv.visitLocalVariable( "index",
                                     Type.getDescriptor( int.class ),
                                     null,
                                     l0,
                                     l2,
                                     1 );
              mv.visitLocalVariable( "fieldType",
                                     Type.getDescriptor( Class.class ),
                                     null,
                                     l0,
                                     l2,
                                     2 );
              mv.visitLocalVariable( "valueType",
                                     Type.getDescriptor( ValueType.class ),
                                     null,
                                     l0,
                                     l2,
                                     3 );
              mv.visitMaxs( 0,
                            0 );
              mv.visitEnd();
          }
      }