private void suggestCompletion(boolean selectReplacedText, boolean isExplicitCall) {
    if (isExplicitCall) {
      myAutopopup = true;
    }

    if (!getField().isFocusOwner()) return;

    LookupFile preselected = null;
    if (myList != null && myCurrentCompletion != null) {
      int index = myList.getSelectedIndex();
      if (index >= 0 && index < myList.getModel().getSize()) {
        preselected = myList.getSelectedValue();
      }
    }

    LookupFile _preselected = preselected;
    myUiUpdater.queue(new Update("textField.suggestCompletion") {
      @Override
      public void run() {
        String completionBase = getCompletionBase();
        if (completionBase == null) return;

        LookupFile file = myFinder.find(completionBase);
        if (file != null && file.exists() && !file.isDirectory()) {
          return;  // we've entered a complete path already, no need to autopopup completion again (IDEA-78996)
        }

        boolean showAdText = completionBase.length() != myPathTextField.getText().length();

        EmptyProgressIndicator indicator = new EmptyProgressIndicator(stateForComponent(myPathTextField));
        ApplicationManager.getApplication().executeOnPooledThread(() -> {
          CompletionResult result = ProgressManager.getInstance().runProcess(
            () -> FileTextFieldUtil.processCompletion(completionBase, myFinder, myFilter, myMacroMap, _preselected),
            indicator);

          SwingUtilities.invokeLater(() -> {
            if (completionBase.equals(getCompletionBase())) {
              selectCompletionRemoveText(result, selectReplacedText);
              showCompletionPopup(result, isExplicitCall, showAdText);
            }
          });
        });
      }
    });
  }
private void suggestCompletion(boolean selectReplacedText, boolean isExplicitCall)