// ReSharper disable UnusedParameter.Local
        static void Subtract <T, TSize>(IInterval <T, TSize> from, IInterval <T, TSize> subtract, IInterval <T, TSize> result)
            where T : IComparable <T>
            where TSize : IComparable <TSize>
        {
            List <IInterval <T, TSize> > results = from.Subtract(subtract);

            Assert.True(results.Count == 1);
            Assert.True(results[0].Equals(result));
        }
        // ReSharper restore UnusedParameter.Local

        static void Subtract <T, TSize>(IInterval <T, TSize> from, IInterval <T, TSize> subtract, List <IInterval <T, TSize> > results)
            where T : IComparable <T>
            where TSize : IComparable <TSize>
        {
            List <IInterval <T, TSize> > subtracted = from.Subtract(subtract);

            Assert.True(results.Count == subtracted.Count);
            for (int i = 0; i < results.Count; ++i)
            {
                IInterval <T, TSize> result         = results[i];
                IInterval <T, TSize> subtractResult = subtracted[i];
                Assert.True(result.Equals(subtractResult));
            }
        }