in src/syntaxhighlight/JTextComponentRowHeader.java [137:197]
  public JTextComponentRowHeader(JScrollPane scrollPane, JTextComponent textComponent) {
    super();
    if (scrollPane == null) {
      throw new NullPointerException("argument 'scrollPane' cannot be null");
    }
    if (textComponent == null) {
      throw new NullPointerException("argument 'textComponent' cannot be null");
    }
    setFont(new Font("Verdana", Font.PLAIN, 10));
    setForeground(Color.black);
    setBackground(new Color(233, 232, 226));
    this.scrollPane = scrollPane;
    this.textComponent = textComponent;
    panelWidth = 0;
    largestRowNumber = 1;
    textComponentHeight = 0;
    lineNumberOffset = 0;
    highlightedLineList = Collections.synchronizedList(new ArrayList<Integer>());
    listenToDocumentUpdate = true;
    document = textComponent.getDocument();
    documentListener = new DocumentListener() {
      @Override
      public void insertUpdate(DocumentEvent e) {
        handleEvent(e);
      }
      @Override
      public void removeUpdate(DocumentEvent e) {
        handleEvent(e);
      }
      @Override
      public void changedUpdate(DocumentEvent e) {
        handleEvent(e);
      }
      public void handleEvent(DocumentEvent e) {
        if (!listenToDocumentUpdate) {
          return;
        }
        Document _document = e.getDocument();
        if (document == _document) {
          checkPanelSize();
        } else {
          _document.removeDocumentListener(this);
        }
      }
    };
    document.addDocumentListener(documentListener);
    checkPanelSize();
  }