am.tree.node.visit and am.tree.node.leave