private boolean showToolTipByMouseMove(@NotNull MouseEvent e) {
    ThreadingAssertions.assertEventDispatchThread();
    LightweightHint currentHint = getCurrentHint();
    if (currentHint != null && (myKeepHint || myMouseMovementTracker.isMovingTowards(e, getBoundsOnScreen(currentHint)))) {
      return true;
    }
    int visualLine = getVisualLineByEvent(e);
    myLastVisualLine = visualLine;
    Rectangle area = myEditor.getScrollingModel().getVisibleArea();
    int visualY = myEditor.visualLineToY(visualLine);
    boolean isVisible = myWheelAccumulator == 0 && area.contains(area.x, visualY);

    if (!isVisible &&
        UISettings.getInstance().getShowEditorToolTip() &&
        !UIUtil.uiParents(myEditor.getComponent(), false).filter(EditorWindowHolder.class).isEmpty()) {
      float rowRatio = (float)visualLine / (myEditor.getVisibleLineCount() - 1);
      int y = myRowAdjuster != 0 ? (int)(rowRatio * myEditor.getVerticalScrollBar().getHeight()) : e.getY() + 1;
      List<RangeHighlighterEx> highlighters = new ArrayList<>();
      collectRangeHighlighters(this, visualLine, highlighters);
      collectRangeHighlighters(myEditor.getFilteredDocumentMarkupModel(), visualLine, highlighters);
      myEditorFragmentRenderer.show(visualLine, highlighters, e.isAltDown(), createHint(e.getComponent(), new Point(0,y)));
      return true;
    }

    Set<RangeHighlighter> highlighters = getNearestHighlighters(e.getY() + 1);
    if (highlighters.isEmpty()) {
      return false;
    }

    int y;
    RangeHighlighter nearest = getNearestRangeHighlighter(e);
    if (nearest == null) {
      y = e.getY();
    }
    else {
      ProperTextRange range = offsetsToYPositions(nearest.getStartOffset(), nearest.getEndOffset());
      int eachStartY = range.getStartOffset();
      int eachEndY = range.getEndOffset();
      y = eachStartY + (eachEndY - eachStartY) / 2;
    }
    if (currentHint != null && y == myCurrentHintAnchorY) {
      return true;
    }
    ReadAction.nonBlocking(()->myTooltipRendererProvider.calcTooltipRenderer(highlighters))
      .expireWhen(() -> myEditor.isDisposed())
      .finishOnUiThread(ModalityState.nonModal(), bigRenderer -> {
        if (bigRenderer != null) {
          LightweightHint hint = showTooltip(bigRenderer, createHint(e.getComponent(), new Point(0, y+1)).setForcePopup(true));
          myCurrentHint = new WeakReference<>(hint);
          myCurrentHintAnchorY = y;
          myKeepHint = false;
          myMouseMovementTracker.reset();
        }
      })
      .submit(AppExecutorUtil.getAppExecutorService());
    return true;
  }
private boolean showToolTipByMouseMove(@NotNull MouseEvent e)