public unsafe int GetHashCode(T[] obj)
        {
            if (obj == null)
            {
                return(0);
            }
            if (obj.Length == 0)
            {
                return(HashSeed);
            }

            ReadOnlySpan <byte> objSpan = MemoryMarshal.Cast <T, byte>(obj);

            fixed(byte *objPtr = &MemoryMarshal.GetReference(objSpan))
            {
                return(EqualityComparisonHelper.GetHashCode(objPtr, obj.Length * EnumValueByteSize));
            }
        }
 protected override bool AreEquals(T x, T y) => EqualityComparisonHelper.AreEquals(x, y, ElementEqualityComparer);
 protected override int CalcCombinedHashCode(T element, int hashCode) => EqualityComparisonHelper.CalcCombinedHashCode(element, hashCode, ElementEqualityComparer);