class A0[@specialized(Int, AnyRef) A]() class B0[@specialized(Int, AnyRef) A, @specialized(Int, AnyRef) B]() class C0[@specialized(Int, AnyRef) A, @specialized(Int, AnyRef) B, @specialized(Int, AnyRef) C]() object Test { def main(args:Array[String]): Unit = { def show(x: Any) = println(x.getClass.getName) show(new A0[Int]()) show(new A0[AnyRef]()) show(new B0[Int, Int]()) show(new B0[Int, AnyRef]()) show(new B0[AnyRef, Int]()) show(new B0[AnyRef, AnyRef]()) show(new C0[Int, Int, Int]()) show(new C0[Int, Int, AnyRef]()) show(new C0[Int, AnyRef, Int]()) show(new C0[Int, AnyRef, AnyRef]()) show(new C0[AnyRef, Int, Int]()) show(new C0[AnyRef, Int, AnyRef]()) show(new C0[AnyRef, AnyRef, Int]()) show(new C0[AnyRef, AnyRef, AnyRef]()) } }