code: func (p *MemoryPool) Iterator() *PoolIterator {
  	p.mutex.Lock()
  	defer p.mutex.Unlock()
  
  	keys := make([]string, len(p.entries))
  	i := 0
  	for k := range p.entries {
  		keys[i] = k
  		i++
  	}
  
  	return &PoolIterator{pool: p, keys: keys, current: 0}
  }
docs: // Iterator returns an iterator of the unspent outputs based on a copy of the pool.