System.Collections.Immutable by Microsoft

<PackageReference Include="System.Collections.Immutable" Version="10.0.1" />

.NET API 253,240 bytes

 OrdinalStringFrozenDictionary_FullCaseInsensitive<TValue>

using System.Collections.Generic; using System.Runtime.CompilerServices; namespace System.Collections.Frozen { internal sealed class OrdinalStringFrozenDictionary_FullCaseInsensitive<TValue> : OrdinalStringFrozenDictionary<TValue> { private readonly ulong _lengthFilter; internal OrdinalStringFrozenDictionary_FullCaseInsensitive(string[] keys, TValue[] values, IEqualityComparer<string> comparer, int minimumLength, int maximumLengthDiff, ulong lengthFilter) : base(keys, values, comparer, minimumLength, maximumLengthDiff, -1, -1) { _lengthFilter = lengthFilter; } [return: System.Runtime.CompilerServices.IsReadOnly] private protected override ref TValue GetValueRefOrNullRefCore(string key) { return ref base.GetValueRefOrNullRefCore(key); } private protected override bool Equals(string x, string y) { return StringComparer.OrdinalIgnoreCase.Equals(x, y); } private protected override bool Equals(ReadOnlySpan<char> x, string y) { return MemoryExtensions.Equals(x, y.AsSpan(), StringComparison.OrdinalIgnoreCase); } private protected override int GetHashCode(string s) { return Hashing.GetHashCodeOrdinalIgnoreCase(s.AsSpan()); } private protected override int GetHashCode(ReadOnlySpan<char> s) { return Hashing.GetHashCodeOrdinalIgnoreCase(s); } private protected override bool CheckLengthQuick(uint length) { return ((long)_lengthFilter & (1 << (int)(length % 64))) != 0; } } }