This doesn't compile, as expected: ```scala case class One[T](fst: T) object Test { def good[T](e: One[T]) = e match { case One(_) => val t: T = e.fst val nok: Nothing = t // error, as expected } } ``` But this does: ```scala case class One[T](fst: T) object Test { def bad[T](e: One[T]) = e match { case foo: One[a] => val t: T = e.fst val nok: Nothing = t // should not compile } } ```