public Statement Reify(Statement node)
{
var result = node;
if (ShouldReify())
{
if (node is MacroStatement)
{
// macro statements are replaced
// so we need to wrap it in a Block
// otherwise we would lose the result
var parentNode = node.ParentNode;
result = new Block(node);
parentNode.Replace(node, result);
}
RunExpansionIterations();
}
return result;
}