pub trait Query {
// Required method
fn on_interest(&mut self, interest: Interest) -> Result;
// Provided methods
fn on_new_data(&mut self) -> Result { ... }
fn on_lost_data(&mut self) -> Result { ... }
fn on_forced(&mut self) -> Result { ... }
}