
class Foo(x: Int) {}
case class Bar(y: Int) extends Foo(y);


trait T {}
trait U {}
class C() {}


trait T1;
trait T2 {}
trait T5 extends T;
trait T6 extends T {}
trait T7 extends T with U;
trait T8 extends T with U {}

class C1();
class C2() {}
class C5() extends C();
class C6() extends C() {}
class C7() extends C() with U;
class C8() extends C() with U {}

case class D1();
case class D2() {}
case class D5() extends C();
case class D6() extends C() {}
case class D7() extends C() with U;
case class D8() extends C() with U {}

object M1;
object M2 {}
object M5 extends C();
object M6 extends C() {}
object M7 extends C() with U;
object M8 extends C() with U {}



-----
