/// <summary>
 /// Returns a hash code for the specified object.
 /// </summary>
 /// <returns>
 /// A hash code for the specified object.
 /// </returns>
 /// <param name="obj">The <see cref="T:System.Object"/> for which a hash code is to be returned.</param><exception cref="T:System.ArgumentNullException">The type of <paramref name="obj"/> is a reference type and <paramref name="obj"/> is null.</exception>
 public int GetHashCode(ObservableCachedElement <TKey, TValue> obj)
 {
     return(ValueEqualityComparer.GetHashCode(obj.Value));
 }
 /// <summary>
 /// Determines whether the specified objects are equal.
 /// </summary>
 /// <returns>
 /// true if the specified objects are equal; otherwise, false.
 /// </returns>
 /// <param name="x">The first object of type <see cref="ObservableInMemoryCache{TKey,TValue}"/> to compare.</param>
 /// <param name="y">The second object of type <see cref="ObservableInMemoryCache{TKey,TValue}"/> to compare.</param>
 public bool Equals(ObservableCachedElement <TKey, TValue> x, ObservableCachedElement <TKey, TValue> y)
 {
     return(ValueEqualityComparer.Equals(x.Value, y.Value));
 }