object MatchError abstract class Foo case class Bar() extends Foo case class Baz(f: Foo) extends Foo Baz(Bar()) match { case Baz(Baz(_)) => () } end MatchError