pub trait Dic<'a> {
type Iterator: Iterator<Item = Morph<&'a str>>;
// Required method
fn lookup_iter(&'a self, input: &'a [u8]) -> Self::Iterator;
// Provided methods
fn lookup(&'a self, input: &'a [u8]) -> Vec<Morph<&'a str>> { ... }
fn lookup_str_iter(&'a self, input: &'a str) -> Self::Iterator { ... }
fn lookup_str(&'a self, input: &'a str) -> Vec<Morph<&'a str>> { ... }
}