private void handleSelect(boolean handleFinalChoices, MouseEvent e) {
    final boolean pathIsAlreadySelected = myShowingChildPath != null && myShowingChildPath.equals(myWizardTree.getSelectionPath());
    if (pathIsAlreadySelected) return;

    myPendingChildPath = null;

    Object selected = myWizardTree.getLastSelectedPathComponent();
    if (selected != null) {
      final Object userObject = extractUserObject(selected);
      if (getTreeStep().isSelectable(selected, userObject)) {
        disposeChildren();

        final boolean hasNextStep = myStep.hasSubstep(userObject);
        if (!hasNextStep && !handleFinalChoices) {
          myShowingChildPath = null;
          return;
        }

        PopupStep<?> queriedStep;
        try (AccessToken ignore = PopupImplUtil.prohibitFocusEventsInHandleSelect();
             AccessToken ignore2 = SlowOperations.startSection(SlowOperations.ACTION_PERFORM)) {
          queriedStep = myStep.onChosen(userObject, handleFinalChoices);
        }
        if (queriedStep == PopupStep.FINAL_CHOICE || !hasNextStep) {
          setFinalRunnable(myStep.getFinalRunnable());
          setOk(true);
          disposeAllParents(e);
        }
        else {
          myShowingChildPath = myWizardTree.getSelectionPath();
          handleNextStep(queriedStep, myShowingChildPath);
          myShowingChildPath = null;
        }
      }
    }
  }
private void handleSelect(boolean handleFinalChoices, MouseEvent e)