private void BurstProducerManyConsumersTestImpl(IBoundedQueue <int> queue)
        {
            const int CONCLUDED_TIMEOUT = 10000;
            int       capacity          = queue.Capacity;

            var concluded = new ManualResetEvent(false);

            bool[] values = new bool[capacity];

            ThreadStart producer = () => {
                Random random = new Random();
                for (int v = 0; v < capacity; ++v)
                {
                    queue.Put(v);
                }
            };

            ThreadStart consumer = () => {
                int val = queue.Get();

                if (CheckRange(0, capacity, val))
                {
                    values[val] = true;

                    if (allTrue(values))
                    {
                        concluded.Set();
                    }
                }
            };

            for (int i = 0; i < capacity; ++i)
            {
                new Thread(consumer).Start();
            }


            new Thread(producer).Start();

            bool result = concluded.WaitOne(CONCLUDED_TIMEOUT);

            concluded.Close();
            Assert.AreEqual(true, result);
        }