@RequiresEdt
  private void applyFilterText(@Nullable String filter, @NotNull LoadingDecorator decorator) {
    decorator.stopLoading();
    boolean hasPreviousSearch = myFilterFuture != null;
    if (hasPreviousSearch) {
      myFilterFuture.cancel(true);
      myFilterFuture = null;
    }
    if (StringUtil.isEmpty(filter)) {
      applyFilteredRevisions(null);
    }
    else {
      if (!hasPreviousSearch) LocalHistoryCounter.INSTANCE.logFilterUsed(myModel.getKind());

      decorator.startLoading(false);
      updateEditorSearch();
      myFilterFuture = ApplicationManager.getApplication().executeOnPooledThread(() -> {
        FileHistoryDialogModel model = myModel;
        Set<Long> revisions;
        if (model != null) {
          revisions = LocalHistoryCounter.INSTANCE.logFilter(myProject, myModel.getKind(), () -> {
            return model.filterContents(filter);
          });
        }
        else {
          revisions = Collections.emptySet();
        }
        decorator.stopLoading();
        UIUtil.invokeLaterIfNeeded(() -> applyFilteredRevisions(revisions));
      });
    }
  }
@RequiresEdt
  private void applyFilterText(@Nullable String filter, @NotNull LoadingDecorator decorator)