private void paintIconRow(int visualLine, int lineY, List<? extends GutterMark> row, Graphics2D g) {
    processIconsRowForY(lineY, row, (x, y, renderer) -> {
      boolean isLoading = myLastActionableClick != null &&
                          myLastActionableClick.myProgressVisualLine == visualLine &&
                          myLastActionableClick.myProgressGutterMark == renderer;
      Icon icon = scaleIcon(renderer.getIcon());
      if (isLoading) {
        Icon loadingIcon = scaleIcon(AnimatedIcon.Default.INSTANCE);
        x -= (loadingIcon.getIconWidth() - icon.getIconWidth()) / 2;
        y -= (loadingIcon.getIconHeight() - icon.getIconHeight()) / 2;
        icon = loadingIcon;
      }

      AffineTransform old = setMirrorTransformIfNeeded(g, x, icon.getIconWidth());
      try {
        icon.paintIcon(this, g, x, y);
      }
      finally {
        if (old != null) g.setTransform(old);
      }
    });
  }
private void paintIconRow(int visualLine, int lineY, List<? extends GutterMark> row, Graphics2D g)