public ArraySegmentAssertions <TActualItem> BeEqualTo <TExpected, TExpectedItem>(TExpected expected, Func <TActualItem, TExpectedItem, bool> comparer)
            where TExpected : IEnumerable <TExpectedItem>
        {
            if (expected is null)
            {
                throw new EqualToAssertionException <ArraySegment <TActualItem>, TExpected>(Actual, expected);
            }

            var(result, index, _, _) = Actual.AsSpan().Compare(expected, comparer);
            return(result switch
            {
                EqualityResult.NotEqualAtIndex
                => throw new EqualToAssertionException <ArraySegment <TActualItem>, TExpected>(
                    Actual,
                    expected,
                    $"Collections differ at index {index}."),

                EqualityResult.LessItem
                => throw new EqualToAssertionException <ArraySegment <TActualItem>, TExpected>(
                    Actual,
                    expected,
                    $"Actual collection has less items."),

                EqualityResult.MoreItems
                => throw new EqualToAssertionException <ArraySegment <TActualItem>, TExpected>(
                    Actual,
                    expected,
                    $"Actual collection has more items."),

                _ => this,
            });