pub trait Term<F: Func + ?Sized> {
type Target: Target<F>;
// Required methods
fn targets<'a>(&'a self) -> Box<dyn Iterator<Item = &'a Self::Target> + 'a>
where F: 'a;
fn targets_mut<'a>(
&'a mut self,
) -> Box<dyn Iterator<Item = &'a mut Self::Target> + 'a>
where F: 'a;
}