text: 
  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 {}
  
  
  
  -----
  