@Override
  public void actionPerformed(@NotNull AnActionEvent e) {
    Project project = e.getProject();
    if (project == null) return;
    RelativePoint popupPoint = getPreferredPopupPoint(e);
    ApplicationManager.getApplication().executeOnPooledThread(() -> {
      List<OpenShellAction> shells = detectShells();
      List<OpenShellAction> wsl = listOpenWslShellActions();
      List<AnAction> customActions = OpenPredefinedTerminalActionProvider.collectAll(project);
      ApplicationManager.getApplication().invokeLater(() -> {
        ListPopup popup = createPopup(shells, wsl, customActions, e.getDataContext());
        if (popupPoint != null) {
          popup.show(popupPoint);
        }
        else {
          popup.showInFocusCenter();
        }
        InputEvent inputEvent = e.getInputEvent();
        if (inputEvent != null && inputEvent.getComponent() != null) {
          PopupUtil.setPopupToggleComponent(popup, inputEvent.getComponent());
        }
      }, project.getDisposed());
    });
  }
@Override
  public void actionPerformed(@NotNull AnActionEvent e)