Compile-time routine
class Macro is Routine { }
A macro is a Routine whose invocation typically happens during parsing. By returning an AST, a macro can inject code into the calling location.