public void WhenEnquedItemsFilterDeliveredTwiceMethodsAreCalled()
        {
            int handledItemsCount  = 0;
            int resolvedItemsCount = 0;

            PendingItemsHandled hpi = (count) =>
            {
                Interlocked.Increment(ref handledItemsCount);
            };
            GroupItemResolved rg = (resolvedGroupItem) =>
            {
                Interlocked.Increment(ref resolvedItemsCount);
            };
            var adf = new ADFilterPong();

            adf.RegisterResolvedGroupHandler(rg);
            var queryEngine = new QueryEngine(hpi, new ADFilterPong());

            queryEngine.Enque("a");
            queryEngine.Enque("b");
            while (Interlocked.CompareExchange(ref handledItemsCount, 2, 2) == 2)
            {
                System.Threading.Thread.Sleep(0);
            }

            queryEngine.Enque("c");
            while (Interlocked.CompareExchange(ref handledItemsCount, 3, 3) == 3)
            {
                System.Threading.Thread.Sleep(0);
            }

            queryEngine.Stop();
        }
        public void StartStop()
        {
            PendingItemsHandled hpi = (count) =>
            {
            };
            GroupItemResolved rg = (resolvedGroupItem) =>
            {
            };
            var adf = new ADFilterPong();

            adf.RegisterResolvedGroupHandler(rg);
            var queryEngine = new QueryEngine(hpi, new ADFilterPong());

            queryEngine.Stop();
        }