code: func (it *NodeIterator) retrieve() bool {
  	// Clear out any previously set values
  	it.Hash = common.Hash{}
  
  	// If the iteration's done, return no available data
  	if it.state == nil {
  		return false
  	}
  	// Otherwise retrieve the current entry
  	switch {
  	case it.dataIt != nil:
  		it.Hash, it.Parent = it.dataIt.Hash(), it.dataIt.Parent()
  		if it.Parent == (common.Hash{}) {
  			it.Parent = it.accountHash
  		}
  	case it.code != nil:
  		it.Hash, it.Parent = it.codeHash, it.accountHash
  	case it.stateIt != nil:
  		it.Hash, it.Parent = it.stateIt.Hash(), it.stateIt.Parent()
  	}
  	return true
  }
docs: // retrieve pulls and caches the current state entry the iterator is traversing.
  // The method returns whether there are any more data left for inspection.