@Override
        public void applyPresentation(@Nullable Icon icon,
                                      @NotNull XValuePresentation valuePresenter,
                                      boolean hasChildren) {
          myShowEvaluating.set(false);
          if (isHintHidden()) {
            return;
          }

          SimpleColoredText text = new SimpleColoredText();
          XValueNodeImpl.buildText(valuePresenter, text, false);

          if (!hasChildren) {
            showTooltipPopup(createHintComponent(icon, text, valuePresenter, myFullValueEvaluator));
          }
          else if (getType() == ValueHintType.MOUSE_CLICK_HINT) {
            if (!myShown) {
              Runnable showPopupRunnable = getShowPopupRunnable(result, myFullValueEvaluator);
              showPopupRunnable.run();
            }
          }
          else {
            if (getType() == ValueHintType.MOUSE_OVER_HINT) {
              if (myFromKeyboard) {
                text.insert(0, "(" + KeymapUtil.getFirstKeyboardShortcutText("ShowErrorDescription") + ") ",
                            SimpleTextAttributes.GRAYED_ATTRIBUTES);
              }

              // first remove a shortcut created for any previous presentation (like "Collecting data...")
              disposeVisibleHint();
              myDisposable = Disposer.newDisposable();
              ShortcutSet shortcut = KeymapUtil.getActiveKeymapShortcuts(IdeActions.ACTION_SHOW_ERROR_DESCRIPTION);
              DumbAwareAction.create(e -> showTree(result))
                             .registerCustomShortcutSet(shortcut, getEditor().getContentComponent(), myDisposable);
            }

            // On presentation change we update our shown popup and resize if needed
            if (mySimpleColoredComponent != null) {
              if (mySimpleColoredComponent instanceof SimpleColoredComponentWithProgress) {
                ((SimpleColoredComponentWithProgress)mySimpleColoredComponent).stopLoading();
              }
              Icon previousIcon = mySimpleColoredComponent.getIcon();
              var previousPreferredWidth = mySimpleColoredComponent.getPreferredSize().width;

              mySimpleColoredComponent.clear();
              fillSimpleColoredComponent(mySimpleColoredComponent, previousIcon, text, myFullValueEvaluator);

              var delta = mySimpleColoredComponent.getPreferredSize().width - previousPreferredWidth;
              if (delta < 0) return;

              resizePopup(delta, 0);
              return;
            }

            mySimpleColoredComponent = createExpandableHintComponent(icon, text, getShowPopupRunnable(result, myFullValueEvaluator), myFullValueEvaluator, valuePresenter);
            if (mySimpleColoredComponent instanceof SimpleColoredComponentWithProgress) {
              ((SimpleColoredComponentWithProgress)mySimpleColoredComponent).startLoading();
            }
            showTooltipPopup(mySimpleColoredComponent);
          }
          myShown = true;
        }
@Override
        public void applyPresentation(@Nullable Icon icon,
                                      @NotNull XValuePresentation valuePresenter,
                                      boolean hasChildren)