@Override
  public Component getTreeCellRendererComponent(JTree tree,
                                                Object value,
                                                boolean selected,
                                                boolean expanded,
                                                boolean leaf,
                                                int row,
                                                boolean hasFocus) {
    TodoItemNode node = (TodoItemNode)((DefaultMutableTreeNode)value).getUserObject();
    String text = value.toString();
    int parenPos = text.indexOf(')');
    int contentStartPos = (parenPos >= 0 && parenPos < (text.length() - 1)) ? parenPos + 2 : 0;
    myPrefixRenderer.getTreeCellRendererComponent(tree, text.substring(0, contentStartPos), selected, expanded, leaf, row, hasFocus);
    myPrefixRenderer.setIcon(node.getIcon());

    List<HighlightedRegionProvider> additionalLines = node.getAdditionalLines();
    for (int i = 0; i < MAX_DISPLAYED_LINES; i++) {
      if (i > additionalLines.size()) {
        myLineRenderers[i].setVisible(false);
      }
      else {
        myLineRenderers[i].setVisible(true);
        myLineRenderers[i].getTreeCellRendererComponent(tree, i == 0 ? text.substring(contentStartPos) : additionalLines.get(i - 1),
                                                        selected, expanded, leaf, row, hasFocus);
        HighlightedRegionProvider provider = i == 0 ? node : additionalLines.get(i - 1);
        for (HighlightedRegion region : provider.getHighlightedRegions()) {
          myLineRenderers[i].addHighlighter(region.startOffset - (i == 0 ? contentStartPos : 0),
                                            region.endOffset - (i == 0 ? contentStartPos : 0),
                                            region.textAttributes);
        }
      }
    }
    myMoreLabel.setVisible(additionalLines.size() >= MAX_DISPLAYED_LINES);
    return this;
  }
@Override
  public Component getTreeCellRendererComponent(JTree tree,
                                                Object value,
                                                boolean selected,
                                                boolean expanded,
                                                boolean leaf,
                                                int row,
                                                boolean hasFocus)