public override void Delete(byte[] key)
 {
     lock (this.writeLock)
     {
         CacheEntry <Value> curVal = null;
         if (this.cache.ContainsKey(key))
         {
             curVal = this.cache[key];
         }
         if (curVal == null)
         {
             curVal = this.CreateCacheEntry(default(Value));
             CacheEntry <Value> oldVal = null;
             if (this.cache.ContainsKey(key))
             {
                 oldVal = this.cache[key];
             }
             this.cache[key] = curVal;
             if (oldVal != null)
             {
                 this.CacheRemoved(key, oldVal.value);
             }
             this.CacheAdded(key, curVal.value);
         }
         curVal.Deleted();
     }
 }