pub trait Writer {
// Required methods
fn write(&mut self, buf: &[u8]) -> Result<()>;
fn get_position(&self) -> u64;
fn set_position(&mut self, position: u64) -> Result<u64>;
fn seekable(&self) -> bool;
// Provided method
fn element_start_notify(&self, _element_id: u64, _position: u64) { ... }
}