pub trait SequentialSubModel {
// Required methods
fn gaps(&self) -> &[Gap];
fn is_obj_at_inf(&self) -> bool;
fn try_iter<'a>(
&'a self,
surfaces: &'a [Surface],
) -> Result<SequentialSubModelIter<'a>>;
// Provided method
fn slice(&self, idx: Range<usize>) -> SequentialSubModelSlice<'_> { ... }
}