protected boolean showHint(final JComponent component) {
    myInsideShow = true;
    try {
      hideCurrentHint();

      BorderLayoutPanel content = JBUI.Panels.simplePanel();
      content.setBackground(component.getBackground());
      content.setBorder(JBUI.Borders.empty(10));
      content.addToCenter(component);

      myCurrentHint = new LightweightHint(content) {
        @Override
        protected boolean canAutoHideOn(TooltipEvent event) {
          InputEvent inputEvent = event.getInputEvent();
          if (inputEvent instanceof MouseEvent) {
            Component comp = inputEvent.getComponent();
            if (comp instanceof EditorComponentImpl) {
              EditorImpl editor = ((EditorComponentImpl)comp).getEditor();
              return !isInsideCurrentRange(editor, ((MouseEvent)inputEvent).getPoint());
            }
          }
          return true;
        }
      };
      myCurrentHint.setForceShowAsPopup(true);
      myCurrentHint.addHintListener(new HintListener() {
        @Override
        public void hintHidden(@NotNull EventObject event) {
          processHintHidden();
        }
      });

      // editor may be disposed before later invokator process this action
      if (myEditor.isDisposed()) {
        return false;
      }

      AppUIUtil.targetToDevice(myCurrentHint.getComponent(), myEditor.getComponent());
      Point p = HintManagerImpl.getHintPosition(myCurrentHint, myEditor, myEditor.xyToLogicalPosition(myPoint), HintManager.UNDER);
      HintHint hint = HintManagerImpl.createHintHint(myEditor, p, myCurrentHint, HintManager.UNDER, true);
      hint.setShowImmediately(true);
      HintManagerImpl.getInstanceImpl().showEditorHint(myCurrentHint, myEditor, p,
                                                       HintManager.HIDE_BY_ANY_KEY |
                                                       HintManager.HIDE_BY_TEXT_CHANGE |
                                                       HintManager.HIDE_BY_SCROLLING, 0, false,
                                                       hint);
      if (myHighlighter == null && isCurrentRangeValid()) { // hint text update
        createHighlighter();
      }
      setHighlighterAttributes();
      setCurrentEditorHint();
    }
    finally {
      myInsideShow = false;
    }
    return true;
  }
protected boolean showHint(final JComponent component)