pub trait IncludeResolver {
// Required method
fn resolve(
&mut self,
target: IncludeTarget,
buffer: &mut dyn IncludeBuffer,
) -> Result<usize, ResolveError>;
// Provided method
fn get_base_dir(&self) -> Option<String> { ... }
}