Although life is easier yet if you abandon the pretense of generality and declare Kind more like
```
class KindU[U <: api.Universe](val u: U) { case class Kind(tpe: u.Type, sig: u.Type, typeKind: String, description: String) { } }
````
because then you don't have to transplant each parameter from an unselectable method into a trait.