Expression visitor

A traversal object that examines expression nodes and can return a rewritten tree.