System.Collections.Immutable by Microsoft

<PackageReference Include="System.Collections.Immutable" Version="8.0.0-preview.4.23259.5" />

.NET API 247,456 bytes

 DefaultFrozenSet<T>

sealed class DefaultFrozenSet<T> : ItemsFrozenSet<T, GSW<T>>
using System.Collections.Generic; using System.Runtime.CompilerServices; namespace System.Collections.Frozen { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1, 0, 1 })] internal sealed class DefaultFrozenSet<[System.Runtime.CompilerServices.Nullable(2)] T> : ItemsFrozenSet<T, DefaultFrozenSet<T>.GSW> { [System.Runtime.CompilerServices.Nullable(0)] internal struct GSW : IGenericSpecializedWrapper { private DefaultFrozenSet<T> _set; public int Count => _set.Count; public IEqualityComparer<T> Comparer => _set.Comparer; public void Store(FrozenSet<T> set) { _set = (DefaultFrozenSet<T>)set; } public int FindItemIndex(T item) { return _set.FindItemIndex(item); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1 })] public Enumerator GetEnumerator() { return _set.GetEnumerator(); } } internal DefaultFrozenSet(HashSet<T> source, bool optimizeForReading) : base(source, optimizeForReading) { } private protected override int FindItemIndex(T item) { IEqualityComparer<T> comparer = base.Comparer; int num = (item != null) ? comparer.GetHashCode(item) : 0; _hashTable.FindMatchingEntries(num, out int i, out int endIndex); for (; i <= endIndex; i++) { if (num == _hashTable.HashCodes[i] && comparer.Equals(item, _items[i])) return i; } return -1; } } }