if (!mod.isLeaf(startNode) && tree.isExpanded(new TreePath(getPathToRoot(startNode, 0))) && !mod.isLeaf(startNode) && mod.getChildCount(startNode) > 0) { Object child = mod.getChild(startNode, 0); if (child != null) return getCellLocation(x, y + rowHeight, tree, mod, node, child); }
  Point getCellLocation(int x, int y, JTree tree, TreeModel mod, Object node,                        Object startNode)  {    int rowHeight = getRowHeight();    if (startNode == null || startNode.equals(node))      {        if (!tree.isRootVisible()            && tree.isExpanded(new TreePath(mod.getRoot())))          return new Point(x + ((getLevel(node)) * rightChildIndent), y);        return new Point(x + ((getLevel(node) + 1) * rightChildIndent), y);      }    if (!mod.isLeaf(startNode)        && tree.isExpanded(new TreePath(getPathToRoot(startNode, 0)))        && !mod.isLeaf(startNode) && mod.getChildCount(startNode) > 0)      {        Object child = mod.getChild(startNode, 0);        if (child != null)          return getCellLocation(x, y + rowHeight, tree, mod, node, child);      }    return getCellLocation(x, y + rowHeight, tree, mod, node,                           getNextVisibleNode(startNode));  }