@ApiStatus.Internal
  protected SimpleColoredComponent createExpandableHintComponent(@Nullable Icon icon,
                                                                 final SimpleColoredText text,
                                                                 final Runnable expand,
                                                                 @Nullable XFullValueEvaluator evaluator,
                                                                 @Nullable XValuePresentation valuePresenter) {
    Icon notNullIcon = icon != null
                       ? IconManager.getInstance().createRowIcon(UIUtil.getTreeCollapsedIcon(), icon)
                       : UIUtil.getTreeCollapsedIcon();

    SimpleColoredComponent component = fillSimpleColoredComponent(createComponent(valuePresenter), notNullIcon, text, evaluator);
    new ClickListener() {
      @Override
      public boolean onClick(@NotNull MouseEvent e, int clickCount) {
        if (SwingUtilities.isLeftMouseButton(e)) {
          Object tag = ((SimpleColoredComponent)e.getSource()).getFragmentTagAt(e.getX());
          if (tag != null) {
            if (tag instanceof Consumer consumer) {
              //noinspection unchecked
              consumer.accept(e);
            }
            else {
              ((Runnable)tag).run();
            }
          }
          else {
            hideCurrentHint();
            expand.run();
          }
          return true;
        }
        return false;
      }
    }.installOn(component);
    return component;
  }
@ApiStatus.Internal
  protected SimpleColoredComponent createExpandableHintComponent(@Nullable Icon icon,
                                                                 final SimpleColoredText text,
                                                                 final Runnable expand,
                                                                 @Nullable XFullValueEvaluator evaluator,
                                                                 @Nullable XValuePresentation valuePresenter)