More work on visitor pattern
Merge remote-tracking branch 'refs/remotes/origin/ast_experimentation' into ast_experimentation