private int paintRecursive(Graphics g, int indentation, int descent,
int paintRecursive(Graphics g, int indentation, int descent,
	private int paintRecursive(Graphics g, int indentation, int descent,			int childNumber, int depth, JTree tree, TreeModel mod, Object curr)  {    Rectangle clip = g.getClipBounds();		if (indentation > clip.x + clip.width + rightChildIndent				|| descent > clip.y + clip.height + getRowHeight())      return descent;		int halfHeight = getRowHeight() / 2;    int halfWidth = rightChildIndent / 2;    int y0 = descent + halfHeight;      int heightOfLine = descent + halfHeight;            if (mod.isLeaf(curr))      {        paintLeaf(g, indentation, descent, tree, curr);			descent += getRowHeight();      }      else      {        if (depth > 0 || tree.isRootVisible())          {            paintNonLeaf(g, indentation, descent, tree, curr);				descent += getRowHeight();            y0 += halfHeight;          }        int max = mod.getChildCount(curr);         if (tree.isExpanded(new TreePath(((DefaultMutableTreeNode) curr)               .getPath())))        for (int i = 0; i < max; ++i)          {				g.setColor(getHashColor());               heightOfLine = descent + halfHeight;               g.drawLine(indentation + halfWidth, heightOfLine,                     indentation + rightChildIndent, heightOfLine);				descent = paintRecursive(g, indentation + rightChildIndent,						descent, i, depth + 1, tree, mod, mod.getChild(curr, i));          }      }      if (tree.isExpanded(new TreePath(((DefaultMutableTreeNode) curr)            .getPath())))         if (y0 != heightOfLine)      {			g.setColor(getHashColor());            g.drawLine(indentation + halfWidth, y0, indentation + halfWidth,                  heightOfLine);      }    return descent;  }