public override void VisitProcedureDeclaration(ProcedureDeclaration procedureDeclaration)
        {
            PushScope(CurrentScope.CreateChildScope(procedureDeclaration));

            base.VisitProcedureDeclaration(procedureDeclaration);

            PopScope();
        }
        public override void VisitTypeDeclaration(TypeDeclaration typeDeclaration)
        {
            Debug.WriteLine("Begin TypeDeclaration " + typeDeclaration.Name);

            PushScope(CurrentScope.CreateChildScope(typeDeclaration));

            base.VisitTypeDeclaration(typeDeclaration);

            PopScope();

            Debug.WriteLine("End TypeDeclaration " + typeDeclaration.Name);
        }
        public override void VisitSchemaDeclaration(SchemaDeclaration schemaDeclaration)
        {
            Debug.WriteLine("Begin SchemaDeclaration " + schemaDeclaration.Name);

            scopes_.Push(CurrentScope.CreateChildScope(schemaDeclaration));

            base.VisitSchemaDeclaration(schemaDeclaration);

            scopes_.Pop();

            Debug.WriteLine("End SchemaDeclaration " + schemaDeclaration.Name);
        }