If the first MoveNext return false, the function should return immediately. And then the last test will be useless: https://github.com/morelinq/MoreLINQ/blob/ae1a86396abf9ee46912027eed13232e50d5fe22/MoreLinq/Segment.cs#L115