@Override
  public PsiElement @Nullable [] getGotoDeclarationTargets(@Nullable PsiElement sourceElement, int offset, Editor editor) {
    boolean shouldSuppressNavigation =
      ContainerUtil.exists(JsonSchemaGotoDeclarationSuppressor.EP_NAME.getExtensionList(), it -> it.shouldSuppressGtd(sourceElement));
    if (shouldSuppressNavigation) return null;

    final IElementType elementType = PsiUtilCore.getElementType(sourceElement);
    if (elementType != JsonElementTypes.STRING_LITERAL && elementType != JsonElementTypes.DOUBLE_QUOTED_STRING && elementType != JsonElementTypes.SINGLE_QUOTED_STRING) return null;
    final JsonStringLiteral literal = PsiTreeUtil.getParentOfType(sourceElement, JsonStringLiteral.class, false);
    if (literal == null) return null;
    final PsiElement parent = literal.getParent();
    if (literal.getReferences().length == 0
        && parent instanceof JsonProperty parentProperty
        && parentProperty.getNameElement() == literal
        && canNavigateToSchema(parentProperty)) {
      final PsiFile containingFile = literal.getContainingFile();
      final JsonSchemaService service = JsonSchemaService.Impl.get(literal.getProject());
      final VirtualFile file = containingFile.getVirtualFile();
      if (file == null || !service.isApplicableToFile(file)) return null;
      final JsonPointerPosition steps = JsonOriginalPsiWalker.INSTANCE.findPosition(literal, true);
      if (steps == null) return null;
      final JsonSchemaObject schemaObject = service.getSchemaObject(containingFile);
      if (schemaObject != null) {
        final PsiElement target = new JsonSchemaResolver(sourceElement.getProject(), schemaObject, steps, JsonOriginalPsiWalker.INSTANCE.createValueAdapter(parentProperty.getParent()))
          .findNavigationTarget(parentProperty.getValue());
        if (target != null) {
          return new PsiElement[] {target};
        }
      }
    }
    return null;
  }
@Override
  public PsiElement @Nullable [] getGotoDeclarationTargets(@Nullable PsiElement sourceElement, int offset, Editor editor)