docs: @Override
      public JDefinedClass apply(String nodeName, JsonNode node, JsonNode parent, JDefinedClass jclass, Schema schema) {
          if (node == null) {
              node = JsonNodeFactory.instance.objectNode();
          }
  
          for (Iterator<String> properties = node.fieldNames(); properties.hasNext(); ) {
              String property = properties.next();
  
              ruleFactory.getPropertyRule().apply(property, node.get(property), node, jclass, schema);
          }
  
          if (ruleFactory.getGenerationConfig().isGenerateBuilders() && !jclass._extends().name().equals("Object")) {
              addOverrideBuilders(jclass, jclass.owner()._getClass(jclass._extends().fullName()));
          }
  
          ruleFactory.getAnnotator().propertyOrder(jclass, node);
  
          return jclass;
      }