Symbolic Assembly: Using Clojure to Meta-Program Bytecode (2017) [video]
youtube.com
youtube.com
I could be missing something, but that seems like the TL;DR to me. Once you have easy AST nodes representing the lowest output level, it's simple to manipulate, especially in a Lisp-derived language (which is always a plus in metaprogramming).