pub trait AstNode<M: AstInfo>: FromPairs<M> {
fn ast_info(&self) -> &M;
fn sort(&self) -> &'static str;
fn constructor(&self) -> &'static str;
fn traverse<F>(&self, _f: F)
where
Self: Sized,
F: FnMut(&dyn AstNode<M>),
{ ... }
}