Arborist is like Cassette Passes, or IRTools Dynamos, but rather than working at the level of transforming untyped IR to different untyped IR, it works at the level of AST expressions.
It is a very early prototype, look in the source to see some exprimentations in this direction.
The short answer to how it works is that it uses CodeTracking to retrieve the AST of any method, then uses a generated function to run what ever modified AST you have declared.