Util functions for working with AST
detect_variables(Macro.t(), context()) :: [{atom(), list(), context()}]
list_match(non_neg_integer(), Macro.t()) :: Macro.t()
pin(Macro.t()) :: Macro.t()
to_case([Macro.t()]) :: Macro.t()
update_variables(Macro.t(), (Macro.t() -> Macro.t()), context()) :: Macro.t()