--- /dev/null
+import kernel
+
+class A[E]
+end
+
+class B[G] super A[Int]
+end
+
+class C super B[Bool]
+end
+
+class X
+ #1alt1#type T: A[Int]
+ #1alt2#type T: A[Bool]
+ #1alt3#type T: B[Int]
+ #1alt4#type T: B[Bool]
+ #1alt5#type T: C
+ fun toto
+ do
+ var ai = new A[Int]
+ var ab = new A[Bool]
+ var bi = new B[Int]
+ var bb = new B[Bool]
+ var c = new C
+
+ var t: T = c.as(T)
+ #alt1#if maybe then t = ai
+ #alt2#if maybe then t = ab
+ #alt3#if maybe then t = bi
+ #alt4#if maybe then t = bb
+ #alt5#if maybe then t = c
+ #alt6#if maybe then ai = t
+ #alt7#if maybe then ab = t
+ #alt8#if maybe then bi = t
+ #alt9#if maybe then bb = t
+ #alt10#if maybe then c = t
+ end
+end
+
+fun maybe: Bool do return true
+