public ICodeblock Compile(string macro)
        {
            ObjectCompilation compiler = GetObjectCompiler(true);
            var m = compiler.Compile(macro);

            if (m.Diagnostic != null)
            {
                throw m.Diagnostic;
            }
            return(new XSharp.MacroCompiler.ObjectMacro.MacroCodeblock(m.Macro, m.ParamCount));
        }
        public ICodeblock Compile(string macro, bool lAllowSingleQuotes, Module module, out bool isCodeblock, out bool addsMemVars)

        {
            isCodeblock = macro.Replace(" ", "").StartsWith("{|");
            addsMemVars = false;
            ObjectCompilation compiler = GetObjectCompiler(lAllowSingleQuotes);
            var m = compiler.Compile(macro);

            if (m.Diagnostic != null)
            {
                throw m.Diagnostic;
            }
            if (m.CreatesAutoVars)
            {
                addsMemVars = false;
                return(new XSharp.MacroCompiler.ObjectMacro.MacroMemVarCodeblock(m.Macro, m.ParamCount));
            }
            else
            {
                return(new XSharp.MacroCompiler.ObjectMacro.MacroCodeblock(m.Macro, m.ParamCount));
            }
        }