public override Node VisitMacroStatement(MetaCodeParser.MacroStatementContext context)
        {
            var identifier = context.MacroName.Text;
            var body = context.BodyStatements.Accept(this) as BlockStatementNode;

            var parameters = context.macroFormalParameter()
                                    .Select(param => param.Accept(this) as MacroFormalParameterNode)
                                    .ToArray();

            //var type = context.Type.Text == "implicit" ? MacroType.Implicit : MacroType.Explicit;

            return StatementFactory.Macro(identifier, parameters, body, MacroType.Implicit);
        }