public static bool Contains <TItem>(this HashSet <TItem> source, TItem value, IEqualityComparer <TItem> comparer)
        {
            if (source == null)
            {
                CommonImplementation.ArgumentNull(nameof(source));
            }

            comparer = comparer ?? EqualityComparer <TItem> .Default;
            var sameComparer = object.ReferenceEquals(source.Comparer, comparer);

            if (sameComparer)
            {
                return(source.Contains(value));
            }

            // no need for bridge call, known to be non-null
            var bridge = new IdentityEnumerable <TItem, HashSet <TItem>, HashSetBridger <TItem>, HashSetEnumerator <TItem> >(source);

            if (comparer == null)
            {
                return(CommonImplementation.ContainsImpl <TItem, IdentityEnumerable <TItem, HashSet <TItem>, HashSetBridger <TItem>, HashSetEnumerator <TItem> >, HashSetEnumerator <TItem> >(ref bridge, value));
            }

            return(CommonImplementation.ContainsImpl <TItem, IdentityEnumerable <TItem, HashSet <TItem>, HashSetBridger <TItem>, HashSetEnumerator <TItem> >, HashSetEnumerator <TItem> >(ref bridge, value, comparer));
        }
 public static System.Collections.Generic.LinkedList <TItem> LinkedList <TItem, TConcat_IdentityBridgeType, TConcat_IdentityBridger, TConcat_IdentityEnumerator>(IdentityEnumerable <TItem, TConcat_IdentityBridgeType, TConcat_IdentityBridger, TConcat_IdentityEnumerator> second)
     where TConcat_IdentityEnumerator : struct, IStructEnumerator <TItem>
     where TConcat_IdentityBridger : struct, IStructBridger <TItem, TConcat_IdentityBridgeType, TConcat_IdentityEnumerator>
     where TConcat_IdentityBridgeType : class
 => LinkedListImpl <TItem, IdentityEnumerable <TItem, TConcat_IdentityBridgeType, TConcat_IdentityBridger, TConcat_IdentityEnumerator>, TConcat_IdentityEnumerator>(ref second);