pub trait StackError: Error {
// Required methods
fn debug_fmt(&self, layer: usize, buf: &mut Vec<String>);
fn next(&self) -> Option<&dyn StackError>;
// Provided method
fn last(&self) -> &dyn StackError
where Self: Sized { ... }
}