This cache stores all values via a WeakReference. Its Add method simply passes
the object to which we’d like a weak reference as the constructor argument for a new
WeakReference. The TryGetValue method attempts to retrieve a value
previously stored with Add. It first checks to see if the dictionary contains a relevant
entry. If it does, that entry’s value will be the WeakReference we created earlier.
My code calls that weak reference’s TryGetTarget method, which will return true if
the object is still available, and false if it has been collected