code: func (iter *Iterator) Prev() bool {
  	if iter.isNew {
  		return iter.Last()
  	}
  
  	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 smaller 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, false)
  	}
  
  	// When there is no left node walk the parents until the parent's left
  	// node is not equal to the previous child.  This will be the previous
  	// node.
  	for iter.node.left == nil {
  		parent := iter.parents.Pop()
  		for parent != nil && parent.left == iter.node {
  			iter.node = parent
  			parent = iter.parents.Pop()
  		}
  		iter.node = parent
  		return iter.limitIterator()
  	}
  
  	// There is a left node, so the previous node is the right-most node
  	// down the left sub-tree.
  	iter.parents.Push(iter.node)
  	iter.node = iter.node.left
  	for node := iter.node.right; node != nil; node = node.right {
  		iter.parents.Push(iter.node)
  		iter.node = node
  	}
  	return iter.limitIterator()
  }
docs: // Prev moves the iterator to the previous 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 last item.