def each(&block)
      @monitor.synchronize do
        expire!
        @stash.map { |key, entry| [key, entry.value] }.each(&block)
      end
    end
def each(&block)
      @monitor.synchronize do
        expire!
        @stash.map { |key, entry| [key, entry.value] }.each(&block)
      end
    end
Allows iteration over the items in the cache. Enumeration is stable: it
 is not affected by changes to the cache, including value expiration.
 Expired values are removed first.

 @note
   The returned values could have expired by the time the client code gets
   to accessing them.

 @note
   Because of its stability, this operation is very expensive. Use with
   caution.

 @yield [Array<key, value>]
   Key/value pairs, when a block is provided.

 @return [Enumerator, Array<key, value>]
   An Enumerator, when no block is provided, or array of key/value pairs.