@Override
  public JType apply(String nodeName,
                     JsonNode node,
                     JsonNode parent,
                     JClassContainer jClassContainer,
                     Schema schema) {
    var fromCache = myRuleFactory.getTypeFromCache(nodeName, node);
    if (fromCache != null) {
      return fromCache;
    }

    JType result = myRuleFactory.getComplexTypeRule().apply(nodeName, node, parent, jClassContainer.getPackage(), schema);
    if (result == null) {
      result = super.apply(nodeName, node, parent, jClassContainer, schema);
    }
    if (result != null){
      myRuleFactory.storeTypeInCache(nodeName, node, result);
    }
    return result;
  }
@Override
  public JType apply(String nodeName,
                     JsonNode node,
                     JsonNode parent,
                     JClassContainer jClassContainer,
                     Schema schema)