code: private GBSNode leftMostChild(
                                   DeleteStack    stack,
                                   GBSNode        p)
      {
          GBSNode q = p.leftChild();
          while (q != null)
          {
              if (stack.index() > GBSTree.maxDepth)
                  throw new OptimisticDepthException(
                                                    "maxDepth (" + GBSTree.maxDepth +
                                                    ") exceeded in GBSIterator.leftMostChild().");
              stack.push(NodeStack.PROCESS_CURRENT, p, "GBSIterator.leftMostChild");
              p = q;
              q = p.leftChild();
          }
  
          _p = p;
          _s = NodeStack.VISIT_RIGHT;
  
          return _p;
      }
docs: Find the left-most child of a node by following all of the
  left children down to the bottom of the tree.
  
  @param stack The DeleteStack that is used to record the traversal.
  @param p The node at which to start the traversal.
  
  @return The left most child at the bottom of the tree or null
  if the tree is empty.
  
  @exception OptimisticDepthException if the depth of the traversal
  exceeds GBSTree.maxDepth.