public List <KeyValuePair <TKey, TValue> > ToList()
        {
            List <KeyValuePair <TKey, TValue> > keyValuePairs;

            using (ReaderLock readerLock = new ReaderLock(this.readerWriterLock))
            {
                List <KeyValuePair <TKey, TValue> > keyValuePairs1 = new List <KeyValuePair <TKey, TValue> >();
                foreach (KeyValuePair <TKey, CacheEntry <TValue> > keyValuePair in this.cache)
                {
                    keyValuePairs1.Add(new KeyValuePair <TKey, TValue>(keyValuePair.Key, keyValuePair.Value.Value));
                }
                keyValuePairs = keyValuePairs1;
            }
            return(keyValuePairs);
        }
        public bool TryUnlockKey(TKey key)
        {
            CacheEntry <TValue> cacheEntry = null;
            bool flag;

            using (ReaderLock readerLock = new ReaderLock(this.readerWriterLock))
            {
                bool flag1 = this.cache.TryGetValue(key, out cacheEntry);
                flag = flag1;
                if (flag1)
                {
                    cacheEntry.Unlock();
                }
            }
            return(flag);
        }
        public bool TryLockKey(TKey key, out TValue value)
        {
            CacheEntry <TValue> cacheEntry = null;
            bool flag;

            value = default(TValue);
            using (ReaderLock readerLock = new ReaderLock(this.readerWriterLock))
            {
                bool flag1 = this.cache.TryGetValue(key, out cacheEntry);
                flag = flag1;
                if (flag1)
                {
                    cacheEntry.Lock(out value);
                }
            }
            return(flag);
        }
        internal int TestHookGetLockCount(TKey key)
        {
            CacheEntry <TValue> cacheEntry = null;
            int num;

            using (ReaderLock readerLock = new ReaderLock(this.readerWriterLock))
            {
                if (!this.cache.TryGetValue(key, out cacheEntry))
                {
                    num = -1;
                }
                else
                {
                    num = cacheEntry.TestHookGetLockCount();
                }
            }
            return(num);
        }