pub trait TreeDiff<'a> {
type TreeKey: 'a + Hash + PartialEq + Eq + Copy;
type ChildIter: Iterator<Item = &'a Self::TreeKey>;
// Required methods
fn children(&self, key: &Self::TreeKey) -> Option<Self::ChildIter>;
fn contains_slot(&self, slot: &Self::TreeKey) -> bool;
// Provided method
fn subtree_diff(
&self,
root1: Self::TreeKey,
root2: Self::TreeKey,
) -> HashSet<Self::TreeKey> { ... }
}