@Override
  public void paint(@NotNull Editor editor, @NotNull Graphics g, @NotNull Rectangle r) {
    if (!myPresentation.isVisible()) return;
    boolean isHovered = myPresentation.isHovered();

    int y = r.y;
    int lineHeight = myEditor.getLineHeight();

    EditorGutterComponentEx gutter = ((EditorEx)editor).getGutterComponentEx();
    int annotationsOffset = gutter.getAnnotationsAreaOffset();
    int annotationsWidth = gutter.getAnnotationsAreaWidth();
    if (annotationsWidth != 0) {
      g.setColor(editor.getColorsScheme().getColor(EditorColors.GUTTER_BACKGROUND));
      g.fillRect(annotationsOffset, y, annotationsWidth, lineHeight);
    }

    boolean isMirrored = DiffUtil.isMirrored(myEditor);
    int shiftX = getStartPhase(lineHeight, isMirrored);
    draw(g, shiftX, y, lineHeight, isHovered, myEditor.getColorsScheme());
  }
@Override
  public void paint(@NotNull Editor editor, @NotNull Graphics g, @NotNull Rectangle r)