private void CheckReferences()
        {
            XQueryMainModule main = module as XQueryMainModule;

            if (main != null)
            {
                main.QueryBody.CheckReference(this);
            }
            foreach (FunctionDeclaration func in module.Prolog.Functions.Values)
            {
                if (!func.External)
                {
                    func.FunctionBody.CheckReference(this);
                }
                CheckSchemaType(func.ReturnType);
                foreach (XQueryFunctionArgument param in func.Parameters)
                {
                    CheckSchemaType(param.Type);
                }
            }
        }
        // methods.

        private XQueryStaticContext Compile()
        {
            CompileProlog();

            XQueryMainModule main = module as XQueryMainModule;
            ExprSequence     expr = (main != null) ?
                                    CompileExprSequence(main.QueryBody) : null;

            return(new XQueryStaticContext(
                       options,
                       compileContext,
                       expr,
                       inScopeSchemas,
                       localVariables,
                       localFunctions,
                       module.NSResolver,
                       module.Prolog.DefaultFunctionNamespace,
                       preserveWhitespace,
                       constructionSpace,
                       defaultOrdered,
                       baseUri,
                       evidence,
                       commandImpl));
        }