docs: static void generateAttribute(XsdAttribute attribute, String apiName){
          String camelAttributeName = getAttributeName(attribute);
          XsdList list = getAttributeList(attribute);
          String javaType = list != null ? JAVA_LIST_DESC : getFullJavaType(attribute);
  
          boolean hasEnum = attributeHasEnum(attribute);
  
          if (hasEnum){
              getAttributeRestrictions(attribute)
                      .stream()
                      .filter(restriction -> restriction.getEnumeration() != null)
                      .forEach(restriction -> createEnum(attribute, restriction.getEnumeration(), apiName));
          }
  
          if (attributeHasRestrictions(attribute)){
              ClassWriter attributeWriter = generateClass(camelAttributeName, JAVA_OBJECT, null, null, ACC_PUBLIC + ACC_FINAL + ACC_SUPER, apiName);
  
              MethodVisitor mVisitor = attributeWriter.visitMethod(ACC_PRIVATE, CONSTRUCTOR, "()V", null, null);
              mVisitor.visitCode();
              mVisitor.visitVarInsn(ALOAD, 0);
              mVisitor.visitMethodInsn(INVOKESPECIAL, JAVA_OBJECT, CONSTRUCTOR, "()V", false);
              mVisitor.visitInsn(RETURN);
              mVisitor.visitMaxs(1, 1);
              mVisitor.visitEnd();
  
              if (hasEnum){
                  String enumTypeDesc = getFullClassTypeNameDesc(getEnumName(attribute), apiName);
  
                  mVisitor = attributeWriter.visitMethod(ACC_PUBLIC + ACC_STATIC, "validateRestrictions", "(" + enumTypeDesc + ")V", null, null);
              } else {
                  String signature = list != null ? "(L" + JAVA_LIST + "<" + getFullJavaType(list.getItemType()) + ">;)V" : null;
  
                  mVisitor = attributeWriter.visitMethod(ACC_PUBLIC + ACC_STATIC, "validateRestrictions", "(" + javaType + ")V", signature, null);
              }
  
              mVisitor.visitCode();
  
              if (hasEnum){
                  String enumName = getEnumName(attribute);
                  String enumType = getFullClassTypeName(enumName, apiName);
  
                  mVisitor.visitVarInsn(ALOAD, 0);
                  mVisitor.visitMethodInsn(INVOKEVIRTUAL, enumType, "getValue", "()" + getEnumContainingType(attribute), false);
                  mVisitor.visitVarInsn(ASTORE, 1);
              }
  
              loadRestrictionsToAttribute(attribute, mVisitor, javaType, hasEnum);
  
              writeClassToFile(camelAttributeName, attributeWriter, apiName);
          }
      }