public void ShiftValues()
        {
            var set = new ImmutableSet64().Add(1);

            set.Shift(1)
            .Single()
            .Should()
            .Be(2);
            set.Shift(-1)
            .Single()
            .Should()
            .Be(0);
            set.Shift(-2)
            .IsEmpty
            .Should()
            .BeTrue();

            set = new ImmutableSet64().Add(0, 1, 2, 3, 12, 61, 62, 63);
            set.Shift(-2)
            .SequenceEqual(new int[] { 0, 1, 10, 59, 60, 61 })
            .Should()
            .BeTrue();
            set.Shift(2)
            .SequenceEqual(new int[] { 2, 3, 4, 5, 14, 63 })
            .Should()
            .BeTrue();
        }
        public void ShiftAndFillValues()
        {
            var seta = new ImmutableSet64().Add(0);
            var setb = new ImmutableSet64().Add(63);

            seta.Shift(1, setb)
            .SequenceEqual(new int[] { 0, 1 })
            .Should().BeTrue();

            seta = new ImmutableSet64().Add(63);
            setb = new ImmutableSet64().Add(1, 7);

            seta.Shift(-2, setb)
            .SequenceEqual(new int[] { 61, 63 })
            .Should()
            .BeTrue();
        }