void updateFromPresentation(@NotNull Presentation presentation, @NotNull String actionPlace) {
      myPresentation.copyFrom(presentation, null, true);

      String text;
      TextWithMnemonic textWithMnemonic = presentation.getTextWithPossibleMnemonic().get();
      if (textWithMnemonic != null && !myMnemonicsEnabled && myHonorActionMnemonics) {
        // See com.intellij.ui.popup.ActionPopupStep implementation of com.intellij.openapi.ui.popup.MnemonicNavigationFilter
        // that NEEDS the UIUtil.MNEMONIC character to be used and doesn't know anything about mnemonic escaping.
        text = textWithMnemonic.format(false, UIUtil.MNEMONIC, true);
      }
      else {
        text = textWithMnemonic != null ? textWithMnemonic.getText() : null;
      }
      if (StringUtil.isEmpty(text)) {
        Utils.reportEmptyTextMenuItem(myAction, actionPlace);
        text = "";
      }
      myText = ActionPresentationDecorator.decorateTextIfNeeded(myAction, text);

      Pair<Icon, Icon> icons = ActionStepBuilder.calcRawIcons(myAction, presentation, false);
      Icon icon = icons.first;
      Icon selectedIcon = icons.second;

      if (maxIconWidth != -1 && maxIconHeight != -1) {
        icon = scaleIconToSize(icon, maxIconWidth, maxIconHeight);
        selectedIcon = scaleIconToSize(selectedIcon, maxIconWidth, maxIconHeight);
      }

      if (icon == null) {
        icon = selectedIcon != null ? selectedIcon : EmptyIcon.create(maxIconWidth, maxIconHeight);
      }

      boolean disableIcon = Boolean.TRUE.equals(presentation.getClientProperty(DISABLE_ICON_IN_LIST));

      myIcon = disableIcon ? null : icon;
      mySelectedIcon = selectedIcon;
    }
void updateFromPresentation(@NotNull Presentation presentation, @NotNull String actionPlace)