Interface for managing caches of objects. Caches serve
as factories for CacheReference objects. These references
can be cleared at any time after creation, using heuristics
determined by the Cache implementation.
Construct a temporary reference to an object. The reference
persists until it becomes dereferenced itself, it is explicitly
cleared by the user, or the cache determines that it is a
candidate for disposal.