pub trait TopLevelAST {
// Required method
fn span(&self) -> TokenTree;
// Provided methods
fn is_trait(&self) -> bool { ... }
fn is_struct(&self) -> bool { ... }
fn is_impl(&self) -> bool { ... }
fn is_fn(&self) -> bool { ... }
}