public void SimpleDequeues()
        {
            var queue = ImmutableQueue <int> .Empty
                        .Enqueue(1)
                        .Enqueue(2)
                        .Enqueue(3);

            var r1 = Transactional.Dequeue <ImmutableQueue <int>, int>(ref queue);

            r1.Should().Be(1);
            var r2 = Transactional.Dequeue <ImmutableQueue <int>, int>(ref queue);

            r2.Should().Be(2);
            var r3 = Transactional.Dequeue <ImmutableQueue <int>, int>(ref queue);

            r3.Should().Be(3);

            Action r4 = () => Transactional.Dequeue <ImmutableQueue <int>, int>(ref queue);

            r4.ShouldThrow <InvalidOperationException>();
        }