GBSNode lowerPredecessor(
    NodeStack     stack)
  {
    GBSNode  r     = leftChild();
    GBSNode  lastr = r;
    if (r != null)
      stack.push(NodeStack.PROCESS_CURRENT, this);
    while (r != null)              /* Find right-most child of left child   */
    {
      if (r.rightChild() != null)
        stack.push(NodeStack.DONE_VISITS, r);
      lastr = r;
      r = r.rightChild();
    }
    return lastr;
  }
GBSNode lowerPredecessor ( NodeStack stack ) { GBSNode r = leftChild ( ) ; GBSNode lastr = r ; if ( r != null ) stack . push ( NodeStack . PROCESS_CURRENT , this ) ; while ( r != null ) { if ( r . rightChild ( ) != null ) stack . push ( NodeStack . DONE_VISITS , r ) ; lastr = r ; r = r . rightChild ( ) ; } return lastr ; }
Find the lower predecessor of this node.

<p>The lower predecessor is the right-most child of the left child.
This is the prior node in order that is also below this node.</p>

@param stack The stack that is used to remember the traversal path.

@return The lower predecessor node.