pub trait Inspector {
// Required method
fn inspect<'a>(
&mut self,
itm: &mut ReflectIntermediate<'a>,
instr: &Instr
) -> Result<()>;
// Provided method
fn chain<'a, I2: Inspector>(
&'a mut self,
second: &'a mut I2
) -> Chain<'_, Self, I2>
where Self: Sized { ... }
}