@Nullable
  Rectangle getLineRendererRectangle(RangeHighlighter highlighter) {
    if (!isLineMarkerVisible(highlighter)) return null;

    int startOffset = highlighter.getStartOffset();
    int endOffset = highlighter.getEndOffset();

    int startY = myEditor.visualLineToY(myEditor.offsetToVisualLine(startOffset));
    int visualLine = myEditor.offsetToVisualLine(endOffset);
    int blockInlaysBelowHeight = EditorUtil.getInlaysHeight(myEditor, visualLine, false);
    int endY = myEditor.visualLineToYRange(visualLine)[1] + blockInlaysBelowHeight;

    LineMarkerRenderer renderer = Objects.requireNonNull(highlighter.getLineMarkerRenderer());
    LineMarkerRendererEx.Position position = getLineMarkerPosition(renderer);

    int w;
    int x;
    switch (position) {
      case LEFT -> {
        w = getLeftFreePaintersAreaWidth();
        x = getLeftFreePaintersAreaOffset();
      }
      case RIGHT -> {
        w = getRightFreePaintersAreaWidth();
        x = getLineMarkerFreePaintersAreaOffset();
      }
      case CUSTOM -> {
        w = getWidth();
        x = 0;
      }
      default -> throw new IllegalArgumentException(position.name());
    }

    int height = endY - startY;
    return new Rectangle(x, startY, w, height);
  }
@Nullable
  Rectangle getLineRendererRectangle(RangeHighlighter highlighter)