[OuterLoop] // stress test
        public void TestAsObservableAndAsObserver_AsObservableDoesntLeak()
        {
            const int Count = 1000;

            var blockReferences = new WeakReference<BufferBlock<int>>[Count];

            for (int i = 0; i < Count; i++)
            {
                var b = new BufferBlock<int>();
                var o = b.AsObservable();
                blockReferences[i] = new WeakReference<BufferBlock<int>>(b);
                b = null;
                o = null;
            }

            for (int i = 0; i < 1; i++)
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
            }

            int remaining = blockReferences.Count(wr => {
                BufferBlock<int> b;
                return wr.TryGetTarget(out b);
            });
            Assert.True(remaining <= 1);
        }