private int CalculateHashCode(IEqualityComparer /*!*/ comparer) { Assert.NotNull(comparer); HashCache curHashCache = _hashCache; if (curHashCache != null && object.ReferenceEquals(comparer, curHashCache.Comparer)) { return(curHashCache.HashCode); } int hash = SetStorage.GetHashCode(_items, comparer); _hashCache = new HashCache(hash, comparer); return(hash); }