/// <summary>
        /// Updates the key/value pair position on first in LRU cache list.
        /// </summary>
        /// <param name="key"></param>
        public override sealed void Update(KeyType key, Action <KeyType, ValueType> updateAlgorithm = null)
        {
            var node = CacheList.Single(node => EqualityComparer <KeyType> .Default.Equals(node.Key, key));

            if (!IsKeyValuePairFirst(key))
            {
                CacheList.Remove(node);
                CacheList.AddFirst(node);
            }
        }
 /// <summary>
 /// Adds key/value pair to LRU cache list.
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 public override sealed void Add(KeyType key, ValueType value, Action <KeyType, ValueType> addAlgorithm = null)
 {
     CacheList.AddFirst(new KeyValuePair <KeyType, ValueType>(key, value));
 }