@Override
  public boolean validate(@NotNull JsonValueAdapter propValue,
                          @NotNull JsonSchemaObject schema,
                          @Nullable JsonSchemaType schemaType,
                          @NotNull JsonValidationHost consumer,
                          @NotNull JsonComplianceCheckerOptions options) {
    final MatchResult result = consumer.resolve(schema.getNot(), propValue);
    if (result.mySchemas.isEmpty() && result.myExcludingSchemas.isEmpty()) return true;

    // if 'not' uses reference to owning schema back -> do not check, seems it does not make any sense
    if (result.mySchemas.stream().anyMatch(s -> schema.equals(s)) ||
        result.myExcludingSchemas.stream().flatMap(Collection::stream)
          .anyMatch(s -> schema.equals(s))) return true;

    final JsonValidationHost checker =
      consumer.checkByMatchResult(propValue,
                                  result,
                                  new JsonComplianceCheckerOptions(options.isCaseInsensitiveEnumCheck(), true, false,
                                                                   JsonAnnotationsCollectionMode.FIND_FIRST));
    if (checker == null || checker.isValid()) {
      consumer.error(JsonBundle.message("schema.validation.against.not"), propValue.getDelegate(), JsonErrorPriority.NOT_SCHEMA);
      return false;
    }

    return true;
  }
@Override
  public boolean validate(@NotNull JsonValueAdapter propValue,
                          @NotNull JsonSchemaObject schema,
                          @Nullable JsonSchemaType schemaType,
                          @NotNull JsonValidationHost consumer,
                          @NotNull JsonComplianceCheckerOptions options)