static void ReverseTestHelper <T, TSize>(T start, bool isStartIncluded, TSize addition, bool isEndIncluded)
            where T : IComparable <T>
            where TSize : IComparable <TSize>
        {
            IInterval <T, TSize> interval = NewInterval(start, addition, isStartIncluded, isEndIncluded);
            T    small         = interval.Start;
            T    big           = interval.End;
            bool smallIncluded = interval.IsStartIncluded;
            bool bigIncluded   = interval.IsEndIncluded;

            interval = interval.Reverse();
            Assert.True(interval.IsReversed);
            Assert.Equal(small, interval.End);
            Assert.Equal(smallIncluded, interval.IsEndIncluded);
            Assert.Equal(big, interval.Start);
            Assert.Equal(bigIncluded, interval.IsStartIncluded);

            interval = interval.Reverse();
            Assert.False(interval.IsReversed);
            Assert.Equal(small, interval.Start);
            Assert.Equal(smallIncluded, interval.IsStartIncluded);
            Assert.Equal(big, interval.End);
            Assert.Equal(bigIncluded, interval.IsEndIncluded);
        }