code: func (iter *Iterator) Next() bool {
  	if iter.isNew {
  		return iter.First()
  	}
  
  	if iter.node == nil {
  		return false
  	}
  
  	// Reseek the previous key without allowing for an exact match if a
  	// force seek was requested.  This results in the key greater than the
  	// previous one or an exhausted iterator if there is no such key.
  	if seekKey := iter.seekKey; seekKey != nil {
  		iter.seekKey = nil
  		return iter.seek(seekKey, false, true)
  	}
  
  	// When there is no right node walk the parents until the parent's right
  	// node is not equal to the previous child.  This will be the next node.
  	if iter.node.right == nil {
  		parent := iter.parents.Pop()
  		for parent != nil && parent.right == iter.node {
  			iter.node = parent
  			parent = iter.parents.Pop()
  		}
  		iter.node = parent
  		return iter.limitIterator()
  	}
  
  	// There is a right node, so the next node is the left-most node down
  	// the right sub-tree.
  	iter.parents.Push(iter.node)
  	iter.node = iter.node.right
  	for node := iter.node.left; node != nil; node = node.left {
  		iter.parents.Push(iter.node)
  		iter.node = node
  	}
  	return iter.limitIterator()
  }
docs: // Next moves the iterator to the next key/value pair and returns false when the
  // iterator is exhausted.  When invoked on a newly created iterator it will
  // position the iterator at the first item.