private void addImplements(JDefinedClass jClass, String nodeName, JsonNode node, JPackage jPackage, Schema schema) {
    List<JType> superTypes = reflectionHelper.getSuperTypesFromAllAnyOne(nodeName, node, jPackage, schema);
    for (JType superType : superTypes) {
      if (superType instanceof JClass && ((JClass)superType).isInterface()) {
        jClass._implements((JClass)superType);
        if (!jClass.isInterface()) {
          // apply implementation here
          Consumer<JDefinedClass> implementation = interfaceImplementation.get(superType.fullName());
          if (implementation == null) {
            this.ruleFactory.getLogger().error("Cannot implement interface " + superType.fullName() + " of " + jClass.fullName());
          }
          else {
            implementation.accept(jClass);
            mergeJsonPropertyOrder(jClass);
          }
        }
      }
    }
  }
private void addImplements(JDefinedClass jClass, String nodeName, JsonNode node, JPackage jPackage, Schema schema)