public void testBufferWrap()
        {
            int N = 10;
            // make tree with types: 1 2 ... INITIAL_LOOKAHEAD_BUFFER_SIZE+N
            ITree t = new CommonTree((IToken)null);

            for (int i = 0; i < UnBufferedTreeNodeStream.INITIAL_LOOKAHEAD_BUFFER_SIZE + N; i++)
            {
                t.AddChild(new CommonTree(new CommonToken(i + 1)));
            }

            // move head to index N
            ITreeNodeStream stream = CreateUnBufferedTreeNodeStream(t);

            for (int i = 1; i <= N; i++)
            {             // consume N
                ITree node = (ITree)stream.LT(1);
                Assert.AreEqual(i, node.Type);
                stream.Consume();
            }

            // now use LT to lookahead past end of buffer
            int remaining = UnBufferedTreeNodeStream.INITIAL_LOOKAHEAD_BUFFER_SIZE - N;
            int wrapBy    = 4;          // wrap around by 4 nodes

            Assert.IsTrue(wrapBy < N, "bad test code; wrapBy must be less than N");
            for (int i = 1; i <= remaining + wrapBy; i++)
            {                                     // wrap past end of buffer
                ITree node = (ITree)stream.LT(i); // look ahead to ith token
                Assert.AreEqual(N + i, node.Type);
            }
        }
        public void Consume()
        {
            object node = input.LT(1);

            input.Consume();
            dbg.ConsumeNode(node);
        }