code: func (l *List) Enumerate(cancel <-chan struct{}) Enumerator {
  	retval := make(chan interface{})
  
  	go func() {
  		l.key.RLock()
  		defer l.key.RUnlock()
  		defer close(retval)
  
  		for _, entry := range l.underlyer {
  			select {
  			case retval <- entry:
  				break
  			case <-cancel:
  				return
  			}
  		}
  	}()
  
  	return retval
  }
docs: // Enumerate lists each element present in the collection