pub trait TreePrinter {
// Required methods
fn node_children(
&self,
) -> Box<dyn Iterator<Item = Box<dyn TreePrinter>> + '_>;
fn node(&self) -> Box<dyn Display>;
// Provided methods
fn print_tree_base(&self, prefix: &str, last: bool) -> String { ... }
fn header(&self) -> Box<dyn Display> { ... }
fn print_tree(&self) -> String { ... }
}