code: func (it *EntryInfoIterator) SetNext() bool {
  	it.mutex.Lock()
  
  	it.valid = false
  	it.currentIndex++
  
  	if it.elementsCount > it.currentIndex {
  		it.valid = true
  		it.mutex.Unlock()
  		return true
  	}
  
  	for i := it.currentShard + 1; i < it.cache.config.Shards; i++ {
  		it.elements, it.elementsCount = it.cache.shards[i].copyKeys()
  
  		// Non empty shard - stick with it
  		if it.elementsCount > 0 {
  			it.currentIndex = 0
  			it.currentShard = i
  			it.valid = true
  			it.mutex.Unlock()
  			return true
  		}
  	}
  	it.mutex.Unlock()
  	return false
  }
docs: // SetNext moves to next element and returns true if it exists.