AST visitor abstraction.