docs: private void generateSequenceMethod(ClassWriter classWriter, String className, String javaType, String addingChildName, String typeName, String nextTypeName, String apiName) {
          String type = getFullClassTypeName(typeName, apiName);
          String nextType = getFullClassTypeName(nextTypeName, apiName);
          String nextTypeDesc = getFullClassTypeNameDesc(nextTypeName, apiName);
          String addingType = getFullClassTypeName(addingChildName, apiName);
  
          javaType = javaType == null ? JAVA_STRING_DESC : javaType;
  
          MethodVisitor mVisitor = classWriter.visitMethod(ACC_PUBLIC, firstToLower(addingChildName), "(" + javaType + ")" + nextTypeDesc, "(" + javaType + ")L" + nextType + "<TZ;>;", null);
          mVisitor.visitLocalVariable(firstToLower(addingChildName), JAVA_STRING_DESC, null, new Label(), new Label(),1);
          mVisitor.visitCode();
          mVisitor.visitTypeInsn(NEW, addingType);
          mVisitor.visitInsn(DUP);
          mVisitor.visitVarInsn(ALOAD, 0);
          mVisitor.visitVarInsn(ALOAD, 0);
          mVisitor.visitFieldInsn(GETFIELD, type, "visitor", elementVisitorTypeDesc);
          mVisitor.visitInsn(ICONST_1);
          mVisitor.visitMethodInsn(INVOKESPECIAL, addingType, CONSTRUCTOR, "(" + elementTypeDesc + elementVisitorTypeDesc + "Z)V", false);
          mVisitor.visitVarInsn(ALOAD, 1);
          mVisitor.visitMethodInsn(INVOKEVIRTUAL, addingType, "text", "(" + JAVA_OBJECT_DESC + ")" + elementTypeDesc, false);
          mVisitor.visitTypeInsn(CHECKCAST, addingType);
          mVisitor.visitMethodInsn(INVOKEVIRTUAL, addingType, "__", "()" + elementTypeDesc, false);
          mVisitor.visitInsn(POP);
          mVisitor.visitTypeInsn(NEW, nextType);
          mVisitor.visitInsn(DUP);
          mVisitor.visitVarInsn(ALOAD, 0);
          mVisitor.visitFieldInsn(GETFIELD, type, "parent", elementTypeDesc);
          mVisitor.visitVarInsn(ALOAD, 0);
          mVisitor.visitFieldInsn(GETFIELD, type, "visitor", elementVisitorTypeDesc);
  
          if (className.equals(nextTypeName)){
              mVisitor.visitInsn(ICONST_0);
          } else {
              mVisitor.visitInsn(ICONST_1);
          }
  
          mVisitor.visitMethodInsn(INVOKESPECIAL, nextType, CONSTRUCTOR, "(" + elementTypeDesc + elementVisitorTypeDesc + "Z)V", false);
          mVisitor.visitInsn(ARETURN);
          mVisitor.visitMaxs(5, 2);
          mVisitor.visitEnd();
      }