private static @Nullable JComponent createHighlightInfoComponent(
    @NotNull Editor editor,
    @NotNull LineTooltipRenderer renderer,
    boolean highlightActions,
    @NotNull PopupBridge popupBridge,
    boolean requestFocus
  ) {
    Ref<WrapperPanel> wrapperPanelRef = new Ref<>();
    Ref<LightweightHint> mockHintRef = new Ref<>();
    HintHint hintHint = new HintHint().setAwtTooltip(true).setRequestFocus(requestFocus).setStatus(HintHint.Status.Info);

    LightweightHint hint = renderer.createHint(editor, new Point(), false, EDITOR_INFO_GROUP, hintHint, highlightActions, false, expand -> {
      LineTooltipRenderer newRenderer = renderer.createRenderer(renderer.getText(), expand ? 1 : 0);
      JComponent newComponent = createHighlightInfoComponent(editor, newRenderer, highlightActions, popupBridge, requestFocus);
      AbstractPopup popup = popupBridge.getPopup();
      WrapperPanel wrapper = wrapperPanelRef.get();
      if (newComponent != null && popup != null && wrapper != null) {
        LightweightHint mockHint = mockHintRef.get();
        if (mockHint != null) closeHintIgnoreBinding(mockHint);
        wrapper.setContent(newComponent);
        validatePopupSize(popup);
      }
    });
    if (hint == null) return null;
    mockHintRef.set(hint);
    bindHintHiding(hint, popupBridge);
    JComponent component = hint.getComponent();
    LOG.assertTrue(component instanceof WidthBasedLayout, "Unexpected type of tooltip component: " + component.getClass());
    WrapperPanel wrapper = new WrapperPanel(component);
    wrapperPanelRef.set(wrapper);
    // emulating LightweightHint+IdeTooltipManager+BalloonImpl - they use the same background
    wrapper.setBackground(hintHint.getTextBackground());
    wrapper.setOpaque(true);
    return wrapper;
  }
private static @Nullable JComponent createHighlightInfoComponent(
    @NotNull Editor editor,
    @NotNull LineTooltipRenderer renderer,
    boolean highlightActions,
    @NotNull PopupBridge popupBridge,
    boolean requestFocus
  )