private void scheduleHighlightingIfNeeded(@NotNull JList<?> component) {
    if (getEditor().isDisposed()) return;
    if (myHighlightingFuture != null && !myHighlightingFuture.isDone()) return;
    if (myItemsDeque.isEmpty()) return;
    myHighlightingFuture = ReadAction.nonBlocking(() -> {
        while (!myItemsDeque.isEmpty()) {
          ProgressManager.checkCanceled();
          RecentLocationItem item = myItemsDeque.removeFirst();
          try {
            myItemHighlights.put(item, Couple.of(
              calcItemHighlights(item, true),
              calcItemHighlights(item, false)));
          }
          catch (ProcessCanceledException e) {
            myItemsDeque.addFirst(item);
            throw e;
          }
        }
      })
      .expireWith(this)
      .finishOnUiThread(ModalityState.stateForComponent(this), __ -> {
        component.repaint();
      })
      .submit(AppExecutorUtil.getAppExecutorService());
  }
private void scheduleHighlightingIfNeeded(@NotNull JList<?> component)