docs: @Override
      public void paint(Graphics g, Shape allocation) {
          Rectangle r = (allocation instanceof Rectangle) ? (Rectangle) allocation : allocation.getBounds();
  
          Color oldColor = g.getColor();
          Integer lineNumber = getLineNumber();
          Color highlightColor = highlight.getHighlight(lineNumber);
          if (highlightColor != null) {
              g.setColor(highlightColor);
              g.fillRect(r.x, r.y, r.width, r.height);
              g.setColor(oldColor);
          }
          // r.x += NUMBERS_WIDTH;
  
          super.paint(g, r);
  
          FontMetrics metrics = g.getFontMetrics();
  
          g.setColor(Color.GRAY);
          String lineNumberString = lineNumber.toString();
          int width = metrics.stringWidth(lineNumberString);
          int numberX = r.x - width - 9 + NUMBERS_WIDTH;
          int numberY = r.y + metrics.getAscent();
  
          g.drawString(lineNumberString, numberX, numberY);
          g.setColor(oldColor);
          // System.out.println("Drawing line for " + lineNumber + " @ " + numberX
          // +"," + numberY);
          // r.x -= NUMBERS_WIDTH;
  
      }