Just stumbled upon this: http://www.artima.com/weblogs/viewpost.jsp?thread=289749 Interesting and seemingly very powerful approach to meta-programming: the program can provide a separate Meta() entry point which has full read and write access to the program's AST.