public void GenerateUpgrade()
        {
            IMdlParser mdlParser = new MdlParser(MdlParserTestFixture.CreateScanner(@"version 1:
    add table User:
        Login type => String, length => 200, nullable => false"));
            IAstNode astNode = mdlParser.Parse();

            IMdlCompilerStage upgradeGenerationStage = new UpgradeGenerationStage();
            astNode.Accept(upgradeGenerationStage);

            Assert.IsInstanceOfType(typeof(IUpgradeNode), astNode.ChildNodes[0]);
            Assert.AreEqual(1, astNode.ChildNodes[0].ChildNodes.Count);
        }
        private IAstNode GetAstNode()
        {
            IAstNode astNode;
            using(Stream resourceStream = 
                Assembly.GetExecutingAssembly().GetManifestResourceStream("octalforty.Wizardby.Tests.Resources.Blog.mdl"))
            {
                IMdlParser mdlParser = new MdlParser(MdlParserTestFixture.CreateScanner(new StreamReader(resourceStream, Encoding.UTF8)));
                astNode = mdlParser.Parse();
            } // using

            //
            // Process type aliases
            astNode.Accept(new TypeAliasResolutionCompilerStage());

            //
            // Resolve PKs
            astNode.Accept(new PrimaryKeyResolutionCompilerStage());

            //
            // Bind stuff
            BindingCompilerStage bindingCompilerStage = new BindingCompilerStage();
            bindingCompilerStage.SetEnvironment(new Wizardby.Core.Compiler.Environment());

            astNode.Accept(bindingCompilerStage);

            //
            // Flatten AST
            astNode.Accept(new AstFlattenerCompilerStage());

            //
            // We also need to generate upgrade since that's what downgrade generator is expecting
            IMdlCompilerStage upgradeGenerationStage = new UpgradeGenerationStage();
            astNode.Accept(upgradeGenerationStage);

            IMdlCompilerStage downgradeGenerationStage = new DowngradeGenerationStage();
            downgradeGenerationStage.SetEnvironment(new Wizardby.Core.Compiler.Environment());
            
            astNode.Accept(downgradeGenerationStage);
            
            return astNode;
        }