public Pin(AsyncCache <TKey, TState, TValue> cache, CacheEntry entry, TValue value)
                : base(cache, value)
            {
                Contracts.Requires.That(entry != null);

                this.entry = entry;
            }
            public CacheEntry(AsyncCache <TKey, TState, TValue> cache, ICacheValue <TKey, TValue> value)
            {
                Contracts.Requires.That(cache != null);
                Contracts.Requires.That(value != null);

                this.cache = cache;
                this.value = value;
            }