public void Cumulative()
        {
            var       moduleVersionId = Guid.NewGuid();
            const int methodToken     = 0x06000001;
            const int methodVersion   = 1;

            var builder = new MethodContextReuseConstraints.Builder(moduleVersionId, methodToken, methodVersion, ilOffset: 5, areRangesEndInclusive: false);

            Assert.True(builder.Build().HasExpectedSpan(0u, uint.MaxValue));

            builder.AddRange(1, 10);
            Assert.True(builder.Build().HasExpectedSpan(1, 10));
            builder = new MethodContextReuseConstraints.Builder(builder.Build(), ilOffset: 5, areRangesEndInclusive: true);

            builder.AddRange(2, 8);
            Assert.True(builder.Build().HasExpectedSpan(2, 9));
            builder = new MethodContextReuseConstraints.Builder(builder.Build(), ilOffset: 5, areRangesEndInclusive: false);

            builder.AddRange(1, 3);
            Assert.True(builder.Build().HasExpectedSpan(3, 9));
            builder = new MethodContextReuseConstraints.Builder(builder.Build(), ilOffset: 5, areRangesEndInclusive: true);

            builder.AddRange(7, 9);
            Assert.True(builder.Build().HasExpectedSpan(3, 7));
        }
        public void EndExclusive()
        {
            const int methodToken   = 0x06000001;
            const int methodVersion = 1;

            var builder = new MethodContextReuseConstraints.Builder(methodToken, methodVersion, ilOffset: 5, areRangesEndInclusive: false);

            Assert.True(builder.Build().HasExpectedSpan(0u, uint.MaxValue));

            builder.AddRange(1, 9);
            Assert.True(builder.Build().HasExpectedSpan(1, 9));

            builder.AddRange(2, 8);
            Assert.True(builder.Build().HasExpectedSpan(2, 8));

            builder.AddRange(1, 3);
            Assert.True(builder.Build().HasExpectedSpan(3, 8));

            builder.AddRange(7, 9);
            Assert.True(builder.Build().HasExpectedSpan(3, 7));
        }