This visitor re-invents a lot of the existing postorder walker for `Expression`.  Are you sure that can't work for you here?