pub trait TName: Eq + Ord + Clone {
type Key: Ord + Clone;
type Loc: Copy;
// Required methods
fn drop_loc(self) -> (Self::Loc, Self::Key);
fn add_loc(loc: Self::Loc, key: Self::Key) -> Self;
fn borrow(&self) -> (&Self::Loc, &Self::Key);
}