public static void mergeProperties(@NotNull JsonSchemaObjectImpl thisObject, @NotNull JsonSchemaObject otherObject) {
    for (var prop : otherObject.getProperties().entrySet()) {
      String key = prop.getKey();
      var otherProp = prop.getValue();
      if (!(otherProp instanceof JsonSchemaObjectImpl impl)) continue;
      if (!thisObject.myProperties.containsKey(key)) {
        thisObject.myProperties.put(key, impl);
      }
      else {
        JsonSchemaObjectImpl existingProp = thisObject.myProperties.get(key);
        thisObject.myProperties.put(key, merge(existingProp, impl, ((JsonSchemaObjectImpl)otherProp)));
      }
    }
  }
public static void mergeProperties(@NotNull JsonSchemaObjectImpl thisObject, @NotNull JsonSchemaObject otherObject)