pub trait NodeVisitor<'a> {
type NodeTy: Node;
// Provided methods
fn visit_down(
&mut self,
node: &'a Self::NodeTy,
) -> VortexResult<TraversalOrder> { ... }
fn visit_up(
&mut self,
node: &'a Self::NodeTy,
) -> VortexResult<TraversalOrder> { ... }
}