1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
object Test extends App { trait A trait B extends A trait C { type U trait D { type T >: B <: A } val y: (D with U)#T = new B { } } class D extends C { trait E trait F { type T = E } type U = F def frob(arg : E) : E = arg frob(y) } new D }