public void TestSwitch()
        {
            var             input     = new[] { 1, 2, 3, 4, 5 };
            Predicate <int> predicate = i => i % 2 == 0;

            var target1 = new BufferBlock <int>();
            var target2 = new BufferBlock <int>();

            var inputBlock = new TransformBlock <int, int>(i => i);

            inputBlock
            .LinkWhen(predicate, target1)
            .LinkOtherwise(target2);

            input.ToObservable()
            .Subscribe(inputBlock.AsObserver());

            IList <int> output1 = target1
                                  .AsObservable()
                                  .ToEnumerable()
                                  .ToList();
            IList <int> output2 = target2
                                  .AsObservable()
                                  .ToEnumerable()
                                  .ToList();

            output1.Should()
            .BeEquivalentTo(input.Where(i => predicate(i)));
            output2.Should()
            .BeEquivalentTo(input.Where(i => !predicate(i)));
        }