code: func (iter Enumerator) Reverse() Enumerator {
  	cache := NewStack()
  	for entry := range iter {
  		cache.Push(entry)
  	}
  
  	retval := make(chan interface{})
  
  	go func() {
  		for !cache.IsEmpty() {
  			val, _ := cache.Pop()
  			retval <- val
  		}
  		close(retval)
  	}()
  	return retval
  }
docs: // Reverse returns items in the opposite order it encountered them in.