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