private static @NotNull Pair<JsonSchemaObject, JsonSchemaAnnotatorChecker> processSchemasVariants(
    @NotNull Project project, final @NotNull Collection<? extends JsonSchemaObject> collection,
    final @NotNull JsonValueAdapter value, boolean isOneOf, JsonComplianceCheckerOptions options) {

    final JsonSchemaAnnotatorChecker checker = new JsonSchemaAnnotatorChecker(project, options);
    final JsonSchemaType type = JsonSchemaType.getType(value);
    JsonSchemaObject selected = null;
    if (type == null) {
      if (!value.isShouldBeIgnored()) checker.typeError(value.getDelegate(), null, getExpectedTypes(collection));
    }
    else {
      final List<JsonSchemaObject> filtered = new ArrayList<>(collection.size());
      JsonSchemaType altType = value.getAlternateType(type);
      for (JsonSchemaObject schema: collection) {
        if (!areSchemaTypesCompatible(schema, type)
            && !areSchemaTypesCompatible(schema, altType)) continue;
        filtered.add(schema);
      }
      if (filtered.isEmpty()) {
        checker.typeError(value.getDelegate(), altType, getExpectedTypes(collection));
      }
      else if (filtered.size() == 1) {
        selected = filtered.get(0);
        checker.checkByScheme(value, selected);
      }
      else {
        if (isOneOf) {
          selected = checker.processOneOf(value, filtered);
        }
        else {
          selected = checker.processAnyOf(value, filtered);
        }
      }
    }
    return Pair.create(selected, checker);
  }
private static @NotNull Pair<JsonSchemaObject, JsonSchemaAnnotatorChecker> processSchemasVariants(
    @NotNull Project project, final @NotNull Collection<? extends JsonSchemaObject> collection,
    final @NotNull JsonValueAdapter value, boolean isOneOf, JsonComplianceCheckerOptions options)