@Override
  protected <T> void handleCommitNotFound(@NotNull T commitId, boolean commitExists,
                                          @NotNull BiFunction<? super VisiblePack, ? super T, Integer> rowGetter) {
    if (!commitExists) {
      super.handleCommitNotFound(commitId, false, rowGetter);
      return;
    }

    boolean hasBranchFilter = getFilterUi().hasBranchFilter();
    String text = VcsLogBundle.message(hasBranchFilter ? "file.history.commit.not.found.in.branch" : "file.history.commit.not.found",
                                       getCommitPresentation(commitId), myPath.getName());

    List<NotificationAction> actions = new ArrayList<>();
    if (hasBranchFilter && getFilterUi().isBranchFilterEnabled()) {
      actions.add(
        NotificationAction.createSimple(VcsLogBundle.message("file.history.commit.not.found.view.and.show.all.branches.link"), () -> {
          getFilterUi().clearFilters();
          VcsLogUtil.invokeOnChange(this, () -> jumpTo(commitId, rowGetter, SettableFuture.create(), false, true));
        }));
    }
    actions.add(NotificationAction.createSimple(VcsLogBundle.message("file.history.commit.not.found.view.in.log.link"), () -> {
      VcsLogContentUtil.runInMainLog(myProject, ui -> {
        ui.jumpTo(commitId, rowGetter, SettableFuture.create(), false, true);
      });
    }));
    VcsNotifier.getInstance(myProject).notifyWarning(VcsLogNotificationIdsHolder.COMMIT_NOT_FOUND, "", text,
                                                     actions.toArray(NotificationAction[]::new));
  }
@Override
  protected <T> void handleCommitNotFound(@NotNull T commitId, boolean commitExists,
                                          @NotNull BiFunction<? super VisiblePack, ? super T, Integer> rowGetter)