code: func (it *nodeIterator) Next(descend bool) bool {
  	if it.err == errIteratorEnd {
  		return false
  	}
  	if seek, ok := it.err.(seekError); ok {
  		if it.err = it.seek(seek.key); it.err != nil {
  			return false
  		}
  	}
  	// Otherwise step forward with the iterator and report any errors.
  	state, parentIndex, path, err := it.peek(descend)
  	it.err = err
  	if it.err != nil {
  		return false
  	}
  	it.push(state, parentIndex, path)
  	return true
  }
docs: // Next moves the iterator to the next node, returning whether there are any
  // further nodes. In case of an internal error this method returns false and
  // sets the Error field to the encountered failure. If `descend` is false,
  // skips iterating over any subnodes of the current node.