@Override
  public synchronized Schema create(URI id, String refFragmentPathDelimiters) {
    if (!schemas.containsKey(id)) {
      URI baseId = removeFragment(id);
      Schema baseSchema = schemas.get(baseId);
      if (baseSchema == null) {
        JsonNode baseContent = contentResolver.resolve(baseId);
        baseSchema = new Schema(baseId, baseContent, null);
      }

      if (id.toString().contains("#")) {
        JsonNode childContent = fragmentResolver.resolve(baseSchema.getContent(), '#' + id.getFragment(), refFragmentPathDelimiters);
        schemas.put(id, new Schema(id, childContent, baseSchema));
      } else {
        schemas.put(id, baseSchema);
      }
    }

    return schemas.get(id);
  }
@Override
  public synchronized Schema create(URI id, String refFragmentPathDelimiters)