public void Test()
        {
            var context = new MyServiceConsumer();
            Language.Parse(context, "foo");
            Assert.IsTrue(context.HasScanning, "Missing scanning service");
            Assert.IsTrue(context.HasParsing, "Missing parsing service");
            Assert.IsTrue(context.HasLanguage, "Missing language service");

            Assert.AreEqual(new Loc(0, 3), context.LastNonTermLocation);
            Assert.AreEqual(new Loc(0, 3), context.LastTermLocation);

            Language.Parse(context, "barr");
            Assert.IsTrue(context.Nested.HasScanning, "Missing nested scanning service");
            Assert.IsTrue(context.Nested.HasParsing, "Missing nested parsing service");
            Assert.IsTrue(context.Nested.HasLanguage, "Missing language service");

            Assert.AreEqual(new Loc(0, 4), context.Nested.LastNonTermLocation);
            Assert.AreEqual(new Loc(0, 4), context.Nested.LastTermLocation);
        }
        public void Test()
        {
            var context = new MyServiceConsumer();

            Language.Parse(context, "foo");
            Assert.IsTrue(context.HasScanning, "Missing scanning service");
            Assert.IsTrue(context.HasParsing, "Missing parsing service");
            Assert.IsTrue(context.HasLanguage, "Missing language service");

            Assert.AreEqual(new Loc(0, 3), context.LastNonTermLocation);
            Assert.AreEqual(new Loc(0, 3), context.LastTermLocation);

            Language.Parse(context, "barr");
            Assert.IsTrue(context.Nested.HasScanning, "Missing nested scanning service");
            Assert.IsTrue(context.Nested.HasParsing, "Missing nested parsing service");
            Assert.IsTrue(context.Nested.HasLanguage, "Missing language service");

            Assert.AreEqual(new Loc(0, 4), context.Nested.LastNonTermLocation);
            Assert.AreEqual(new Loc(0, 4), context.Nested.LastTermLocation);
        }