Refining Visitor pattern.
Un-flattening the syntax trees. Take that, Demeter!