void showNextStepPopup(PopupStep nextStep, Object parentValue) {
    if (nextStep == null) {
      String valueText = getListStep().getTextFor(parentValue);
      String message = String.format("Cannot open submenu for '%s' item. PopupStep is null", valueText);
      LOG.warn(message);
      return;
    }

    if ((PopupStep<?>)myStep instanceof ActionPopupStep o &&
        nextStep instanceof ActionPopupStep oo) {
      oo.setSubStepContextAdjuster(o.getSubStepContextAdjuster());
    }

    Point point = myList.indexToLocation(myList.getSelectedIndex());
    SwingUtilities.convertPointToScreen(point, myList);
    myChild = createPopup(this, nextStep, parentValue);
    if (ScreenReader.isActive()) myChild.setRequestFocus(true);
    if (myChild instanceof ListPopup child) {
      for (ListSelectionListener listener : myList.getListSelectionListeners()) {
        child.addListSelectionListener(listener);
      }
      child.setShowSubmenuOnHover(myShowSubmenuOnHover);
      child.setExecuteExpandedItemOnClick(myExecuteExpandedItemOnClick);
    }
    JComponent container = getContent();

    int y = point.y;
    if (parentValue != null && getListModel().isSeparatorAboveOf(parentValue)) {
      SeparatorWithText swt = new SeparatorWithText();
      swt.setCaption(getListModel().getCaptionAboveOf(parentValue));
      y += swt.getPreferredSize().height - 1;
    }

    if (!UiInterceptors.tryIntercept(myChild)) {
      // Intercept child popup in tests because it is impossible to calculate location on screen there
      myChild.show(container, container.getLocationOnScreen().x + container.getWidth() - STEP_X_PADDING, y, true);
    }
    setIndexForShowingChild(myList.getSelectedIndex());
    myMouseMovementTracker.reset();
  }
void showNextStepPopup(PopupStep nextStep, Object parentValue)