pub trait TraitWhere {
    type Item<'a>
       where Self: 'a;

    // Provided methods
    fn func(self)
       where Self: Sized { ... }
    fn lines(self) -> Lines<Self>
       where Self: Sized { ... }
    fn merge<T>(self, a: T)
       where Self: Sized,
             T: Sized { ... }
}