@Nullable
    @Override
    public Continuation performInReadAction(@NotNull ProgressIndicator indicator) throws ProcessCanceledException {
      if (isProjectDisposed()) return null;

      Set<Object> elements = Collections.synchronizedSet(new LinkedHashSet<>());
      scheduleIncrementalListUpdate(elements, 0);

      boolean scopeExpanded =
        DumbModeAccessType.RELIABLE_DATA_ONLY.ignoreDumbMode(() -> populateElements(elements));
      final String cardToShow = elements.isEmpty() ? NOT_FOUND_CARD : scopeExpanded ? NOT_FOUND_IN_PROJECT_CARD : CHECK_BOX_CARD;

      Set<Object> objects = filter(elements);
      Object selected;
      if (myInitialSelection != null) {
        selected = myInitialSelection.fun(objects);
        myInitialSelection = null;
      }
      else {
        selected = null;
      }
      AnchoredSet resultSet = new AnchoredSet(objects);
      return new Continuation(() -> {
        if (!checkDisposed() && !myProgress.isCanceled()) {
          CalcElementsThread currentBgProcess = myCalcElementsThread;
          LOG.assertTrue(currentBgProcess == this, currentBgProcess);

          showCard(cardToShow, 0);

          Set<Object> filtered = resultSet.getElements();
          backgroundCalculationFinished(filtered, selected == null ? mySelectionPolicy : new SelectObject(selected));
          myCallback.consume(filtered);
        }
      }, myModalityState);
    }
@Nullable
    @Override
    public Continuation performInReadAction(@NotNull ProgressIndicator indicator)