U6R,      !"#$%&'()*+ Safe-Inferred+-./kThe values stored in the Map of the LRU cache. They embed a doubly-linked list through the values of the ,.The actual value$the key of the value before this one#the key of the value after this one1Stores the information that makes up an LRU cache+the key of the most recently accessed entry,the key of the least recently accessed entry !the maximum size of the LRU cache  the backing , uMake an LRU. If a size limit is specified, the LRU is guaranteed to not grow above the specified number of entries. Build a new LRU from the given maximum size and list of contents, in order from most recently accessed to least recently accessed. yRetrieve a list view of an LRU. The items are returned in order from most recently accessed to least recently accessed.KTraverse the (key, value) pairs of the LRU, in a read-only way. This is a Fold in the sense used by the  (https://hackage.haskell.org/package/lens lens packageG. It must be read-only because alterations could break the underlying , structure.=Traverse the keys of the LRU, in a read-only way. This is a Fold in the sense used by the  (https://hackage.haskell.org/package/lens lens packageG. It must be read-only because alterations could break the underlying , structure.Add an item to an LRU. If the key was already present in the LRU, the value is changed to the new value passed in. The item added is marked as the most recently accessed item in the LRU returned.pIf this would cause the LRU to exceed its maximum size, the least recently used item is dropped from the cache.Same as A, but also returns element which was dropped from cache, if any.nLook up an item in an LRU. If it was present, it is marked as the most recently accesed in the returned LRU.`Remove an item from an LRU. Returns the new LRU, and the value removed if the key was present.Removes the least-recently accessed element from the LRU. Returns the new LRU, and the key and value from the least-recently used element, if there was one.:Returns the number of elements the LRU currently contains.Internal function. The key passed in must be present in the LRU. Moves the item associated with that key to the most recently accessed position.An internal function used by  (when the cache is full) and U. This function has strict requirements on its arguments in order to work properly.As this is intended to be an internal function, the arguments were chosen to avoid repeated computation, rather than for simplicity of calling this function.,Internal function. This is very similar to -, with two major differences. First, it's strict in the application of the function, which is a huge win when working with this structure.ZSecond, it requires that the key be present in order to work. If the key isn't present, . will be inserted into the ,#, which will cause problems later.[Internal function. This checks the four structural invariants of the LRU cache structure: 8The cache's size does not exceed the specified max size.CThe linked list through the nodes is consistent in both directions.?The linked list contains the same number of nodes as the cache.'Every key in the linked list is in the ,. $the optional maximum size of the LRU $the optional maximum size of the LRU (The key must be present in the provided  This is the  to modify this is the , from the previous argument, but with the key already removed from it. This isn't consistent yet, as it still might contain LinkedVals with pointers to the removed key. This is the Z that corresponds to the key in the passed in LRU. It is absent from the passed in map.     Safe-Inferred     Safe-Inferred+ The opaque wrapper typeXMake a new AtomicLRU that will not grow beyond the optional maximum size, if specified. JBuild a new LRU from the optional maximum size and list of contents. See   for the semantics.!+Retrieve a list view of an AtomicLRU. See   for the semantics.#0Insert a key/value pair into an AtomicLRU. See  for the semantics.$#Look up a key in an AtomicLRU. See  for the semantics.%\Remove an item from an AtomicLRU. Returns the value for the removed key, if it was present&tRemove the least-recently accessed item from an AtomicLRU. Returns the (key, val) pair removed, if one was present.'@Returns the number of elements the AtomicLRU currently contains.(Given a function that takes an T and returns one of the same type, use it to modify the contents of this AtomicLRU.)Given a function that takes an m and returns an IO action producting one of the same type, use it to modify the contents of this AtomicLRU.* A version of /= that forces the result of the function application to WHNF.+ A version of 0= that forces the result of the function application to WHNF.the optional maximum size the optional maximum size!"#$%&'()*+ !"#$%&'()*+ !"#$%&'()*+ !"#$%&'()*+ Safe-Inferred  !"#$%&'()  !"#$%&'()1       !"# $%&'()*()+,-.,/0,/12lrucache-1.2.0.0Data.Cache.LRU.InternalData.Cache.LRUData.Cache.LRU.IOData.Cache.LRU.IO.Internal LinkedValLinkvalueprevnextLRUfirstlastmaxSizecontentnewLRUfromListtoListpairskeysinsertinsertInforminglookupdeletepopsizehit'delete'adjust'valid $fShowLRU $fFoldableLRU$fTraversableLRU AtomicLRUC newAtomicLRUmodifyAtomicLRUmodifyAtomicLRU' modifyMVar_' modifyMVar'containers-0.5.5.1 Data.Map.BaseMapadjustbaseGHC.Err undefinedControl.Concurrent.MVar modifyMVar_ modifyMVar