@Override
    public void mouseMoved(@NotNull EditorMouseEvent e) {
      if (!ExperimentalUI.isNewUI() || !ShowBreakpointsOverLineNumbersAction.isSelected()) return;
      Editor editor = e.getEditor();
      if (editor.getProject() != myProject || editor.getEditorKind() != EditorKind.MAIN_EDITOR) return;
      EditorGutter editorGutter = editor.getGutter();
      if (editorGutter instanceof EditorGutterComponentEx gutter) {
        if (e.getArea() == EditorMouseEventArea.LINE_NUMBERS_AREA && EditorUtil.isBreakPointsOnLineNumbers()) {
          int line = EditorUtil.yToLogicalLineNoCustomRenderers(editor, e.getMouseEvent().getY());
          Document document = editor.getDocument();
          if (DocumentUtil.isValidLine(line, document)) {
            XSourcePositionImpl position = XSourcePositionImpl.create(FileDocumentManager.getInstance().getFile(document), line);
            if (position != null) {
              if (myLastPosition == null || !myLastPosition.getFile().equals(position.getFile()) || myLastPosition.getLine() != line) {
                // drop an icon first and schedule the available types calculation
                clear(gutter);
                myLastPosition = position;
                lineChangeHandler.lineChanged(editor, position);
              }
              return;
            }
          }
        }
        if (myLastIcon != null) {
          clear(gutter);
          myLastPosition = null;
          lineChangeHandler.exitedGutter();
        }
      }
    }
@Override
    public void mouseMoved(@NotNull EditorMouseEvent e)