pub trait Node<'a> {
// Required methods
fn kind(&self) -> &str;
fn start_byte(&self) -> usize;
fn end_byte(&self) -> usize;
fn child_count(&self) -> usize;
fn child(&self, i: usize) -> Option<Self>
where Self: Sized;
fn is_named(&self) -> bool;
// Provided methods
fn extract_label(&self, text: &[u8]) -> Option<Vec<u8>> { ... }
fn has_label(&self) -> bool { ... }
}