@Override
  public void invoke(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file) {
    String featureId = getFeatureUsedKey();
    if (featureId != null) {
      FeatureUsageTracker.getInstance().triggerFeatureUsed(featureId);
    }

    try {
      GotoData gotoData = getSourceAndTargetElements(editor, file);
      Consumer<JBPopup> showPopupProcedure = popup -> {
        if (!editor.isDisposed()) {
          popup.showInBestPositionFor(editor);
        }
      };
      if (gotoData != null) {
        show(project, editor, file, gotoData, showPopupProcedure);
      }
      else {
        chooseFromAmbiguousSources(editor, file, data -> show(project, editor, file, data, showPopupProcedure));
      }
    }
    catch (IndexNotReadyException e) {
      DumbService.getInstance(project).showDumbModeNotificationForFunctionality(
        CodeInsightBundle.message("message.navigation.is.not.available.here.during.index.update"),
        DumbModeBlockedFunctionality.GotoTarget);
    }
  }
@Override
  public void invoke(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file)