Consider the following example:
sealed trait Kind case object B extends Kind case object C extends Kind sealed trait Test { type K <: Kind val kind: