abstract class C {
type T <: Any;
}
abstract class D[S <: C](_c: S) extends C {
val c: S = _c;
type T <: c.T;
abstract class E(e: E) extends D[E](e);
object Test {
def f(e: E): Unit = {
def g(t: e.T): Unit = {
val i: Int = t;
()