class A2 extends A1 with T1{ def f2 = { def g = 5 ; class A { def a = g }; g ; new A().a } } object Test extends A2 { def main(args: Array[String]) { println(Seq(Class.forName(classOf[T1].getName + "$class"), classOf[A1], classOf[A2]).flatMap(_.getDeclaredMethods.map(_.toString).sorted).mkString("\n")) } }