public void TryPeek()
        {
            ArraySegment <byte> message = new ArraySegment <byte>(new byte[] { 0x42 });

            pipe.Enqueue(message);
            Assert.That(pipe.Count, Is.EqualTo(1));

            bool result = pipe.TryPeek(out ArraySegment <byte> peeked);

            Assert.That(result, Is.True);
            Assert.That(peeked.Offset, Is.EqualTo(message.Offset));
            Assert.That(peeked.Count, Is.EqualTo(message.Count));
            for (int i = 0; i < message.Count; ++i)
            {
                Assert.That(peeked.Array[peeked.Offset + i], Is.EqualTo(message.Array[message.Offset + i]));
            }

            // peek shouldn't remove anything
            Assert.That(pipe.Count, Is.EqualTo(1));
        }