sealed abstract class Z
object Z {
   object     Z0    extends Z
   case class Z1()  extends Z
   object     Z2    extends Z
   case class Z3()  extends Z
   object     Z4    extends Z
   case class Z5()  extends Z
   object     Z6    extends Z
   case class Z7()  extends Z
   object     Z8    extends Z
   case class Z9()  extends Z
   object     Z10   extends Z
   case class Z11() extends Z
   object     Z12   extends Z
   case class Z13() extends Z
   object     Z14   extends Z
   case class Z15() extends Z
   object     Z16   extends Z
   case class Z17() extends Z
   object     Z18   extends Z
   case class Z19() extends Z
}

// drop any case and it will report an error
object Test {
  import Z._
  def foo(z: Z) = z match {
    case Z0  | Z1()  | Z2  | Z3()  | Z4  | Z5()  | Z6  | Z7()  | Z8  | Z9() |
         Z10 | Z11() | Z12 | Z13() | Z14 | Z15() | Z16 | Z17() | Z18 | Z19()
         =>
  }
}