|  | library; | 
|  | // | 
|  | // Problems in library: | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:10:41: Error: Type argument 'A<Null>' doesn't conform to the bound 'A<X>?' of the type variable 'X' on 'A'. | 
|  | //  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //   void method1<Y extends A<Y>?>(A<Y> a, A<A<Null>>? b) { | 
|  | //                                         ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:5:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class A<X extends A<X>?> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:15:34: Error: Type argument 'Y' doesn't conform to the bound 'num' of the type variable 'X' on 'D'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //   void method2<Y extends String>(D<Y> a, D<String>? b) { | 
|  | //                                  ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:7:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class D<X extends num> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:15:42: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'X' on 'D'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //   void method2<Y extends String>(D<Y> a, D<String>? b) { | 
|  | //                                          ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:7:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class D<X extends num> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:21:39: Error: Type argument 'X/*1*/' doesn't conform to the bound 'A<X/*2*/>?' of the type variable 'X' on 'A'. | 
|  | //  - 'X/*1*/' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | //  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | //  - 'X/*2*/' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | // extension ext2<X extends A<Null>?> on A<X> {} | 
|  | //                                       ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:5:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class A<X extends A<X>?> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:24:36: Error: Type argument 'Y' doesn't conform to the bound 'A<X>?' of the type variable 'X' on 'A'. | 
|  | //  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //   void method1<Y extends A<Null>?>(A<Y> a, A<A<Null>>? b) { | 
|  | //                                    ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:5:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class A<X extends A<X>?> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:24:44: Error: Type argument 'A<Null>' doesn't conform to the bound 'A<X>?' of the type variable 'X' on 'A'. | 
|  | //  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //   void method1<Y extends A<Null>?>(A<Y> a, A<A<Null>>? b) { | 
|  | //                                            ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:5:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class A<X extends A<X>?> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:29:34: Error: Type argument 'Y' doesn't conform to the bound 'num' of the type variable 'X' on 'D'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //   void method2<Y extends String>(D<Y> a, D<String>? b) { | 
|  | //                                  ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:7:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class D<X extends num> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:29:42: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'X' on 'D'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //   void method2<Y extends String>(D<Y> a, D<String>? b) { | 
|  | //                                          ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:7:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class D<X extends num> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:23:40: Error: Type argument 'X/*1*/' doesn't conform to the bound 'A<X/*2*/>?' of the type variable 'X' on 'A'. | 
|  | //  - 'X/*1*/' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | //  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | //  - 'X/*2*/' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | // class B<X extends A<Null>?> implements A<X> { | 
|  | //                                        ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:5:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class A<X extends A<X>?> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:36:22: Error: Type argument 'A<Null>' doesn't conform to the bound 'A<X>?' of the type variable 'X' on 'A'. | 
|  | //  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //   factory C.redirect(A<A<Null>>? a) = C.internal; | 
|  | //                      ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:5:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class A<X extends A<X>?> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:38:18: Error: Type argument 'A<Null>' doesn't conform to the bound 'A<X>?' of the type variable 'X' on 'A'. | 
|  | //  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //   factory C.fact(A<A<Null>>? a) { | 
|  | //                  ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:5:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class A<X extends A<X>?> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:12:5: Error: Type argument 'A<Null>' doesn't conform to the bound 'A<X>?' of the type variable 'X' on 'A'. | 
|  | //  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //     A<A<Null>>? d; | 
|  | //     ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:5:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class A<X extends A<X>?> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:16:5: Error: Type argument 'Y' doesn't conform to the bound 'num' of the type variable 'X' on 'D'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //     D<Y>? c; | 
|  | //     ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:7:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class D<X extends num> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:17:5: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'X' on 'D'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //     D<String>? d; | 
|  | //     ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:7:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class D<X extends num> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:25:5: Error: Type argument 'Y' doesn't conform to the bound 'A<X>?' of the type variable 'X' on 'A'. | 
|  | //  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //     A<Y>? c; | 
|  | //     ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:5:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class A<X extends A<X>?> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:26:5: Error: Type argument 'A<Null>' doesn't conform to the bound 'A<X>?' of the type variable 'X' on 'A'. | 
|  | //  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //     A<A<Null>>? d; | 
|  | //     ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:5:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class A<X extends A<X>?> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:30:5: Error: Type argument 'Y' doesn't conform to the bound 'num' of the type variable 'X' on 'D'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //     D<Y>? c; | 
|  | //     ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:7:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class D<X extends num> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:31:5: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'X' on 'D'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //     D<String>? d; | 
|  | //     ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:7:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class D<X extends num> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:39:5: Error: Type argument 'A<Null>' doesn't conform to the bound 'A<X>?' of the type variable 'X' on 'A'. | 
|  | //  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //     A<A<Null>>? b; | 
|  | //     ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:5:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class A<X extends A<X>?> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:40:5: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'X' on 'D'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //     D<String>? c; | 
|  | //     ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:7:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class D<X extends num> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:45:5: Error: Type argument 'A<Null>' doesn't conform to the bound 'A<X>?' of the type variable 'X' on 'A'. | 
|  | //  - 'A' is from 'pkg/front_end/testcases/nnbd/issue43211.dart'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //     A<A<Null>>? a; | 
|  | //     ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:5:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class A<X extends A<X>?> {} | 
|  | //         ^ | 
|  | // | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:46:5: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'X' on 'D'. | 
|  | // Try changing type arguments so that they conform to the bounds. | 
|  | //     D<String>? b; | 
|  | //     ^ | 
|  | // pkg/front_end/testcases/nnbd/issue43211.dart:7:9: Context: This is the type variable whose bound isn't conformed to. | 
|  | // class D<X extends num> {} | 
|  | //         ^ | 
|  | // | 
|  | import self as self; | 
|  | import "dart:core" as core; | 
|  |  | 
|  | class A<X extends self::A<self::A::X%>? = self::A<dynamic>?> extends core::Object { | 
|  | synthetic constructor •() → self::A<self::A::X%> | 
|  | : super core::Object::•() | 
|  | ; | 
|  | } | 
|  | class D<X extends core::num> extends core::Object { | 
|  | synthetic constructor •() → self::D<self::D::X> | 
|  | : super core::Object::•() | 
|  | ; | 
|  | } | 
|  | class B<X extends self::A<Null>?> extends core::Object implements self::A<self::B::X%> { | 
|  | synthetic constructor •() → self::B<self::B::X%> | 
|  | : super core::Object::•() | 
|  | ; | 
|  | method method1<Y extends self::A<Null>?>(self::A<self::B::method1::Y%> a, self::A<self::A<Null>>? b) → void { | 
|  | self::A<self::B::method1::Y%>? c; | 
|  | self::A<self::A<Null>>? d; | 
|  | } | 
|  | method method2<Y extends core::String>(self::D<self::B::method2::Y> a, self::D<core::String>? b) → void { | 
|  | self::D<self::B::method2::Y>? c; | 
|  | self::D<core::String>? d; | 
|  | } | 
|  | } | 
|  | class C extends core::Object { | 
|  | constructor internal(wildcard dynamic _#wc0#formal) → self::C | 
|  | : super core::Object::•() { | 
|  | self::A<self::A<Null>>? a; | 
|  | self::D<core::String>? b; | 
|  | } | 
|  | static factory redirect(self::A<self::A<Null>>? a) → self::C /* redirection-target: self::C::internal */ | 
|  | return new self::C::internal(a); | 
|  | static factory fact(self::A<self::A<Null>>? a) → self::C { | 
|  | self::A<self::A<Null>>? b; | 
|  | self::D<core::String>? c; | 
|  | return new self::C::internal(a); | 
|  | } | 
|  | } | 
|  | extension Extension1<X extends self::A<X%>? = self::A<dynamic>?> on self::A<X%> { | 
|  | method method1 = self::Extension1|method1; | 
|  | method tearoff method1 = self::Extension1|get#method1; | 
|  | method method2 = self::Extension1|method2; | 
|  | method tearoff method2 = self::Extension1|get#method2; | 
|  | } | 
|  | extension ext2<X extends self::A<Null>?> on self::A<X%> { | 
|  | } | 
|  | static extension-member method Extension1|method1<X extends self::A<self::Extension1|method1::X%>? = self::A<dynamic>?, Y extends self::A<self::Extension1|method1::Y%>? = self::A<dynamic>?>(lowered final self::A<self::Extension1|method1::X%> #this, self::A<self::Extension1|method1::Y%> a, self::A<self::A<Null>>? b) → void { | 
|  | self::A<self::Extension1|method1::Y%>? c; | 
|  | self::A<self::A<Null>>? d; | 
|  | } | 
|  | static extension-member method Extension1|get#method1<X extends self::A<self::Extension1|get#method1::X%>? = self::A<dynamic>?>(lowered final self::A<self::Extension1|get#method1::X%> #this) → <Y extends self::A<Y%>? = self::A<dynamic>?>(self::A<Y%>, self::A<self::A<Null>>?) → void | 
|  | return <Y extends self::A<Y%>? = self::A<dynamic>?>(self::A<Y%> a, self::A<self::A<Null>>? b) → void => self::Extension1|method1<self::Extension1|get#method1::X%, Y%>(#this, a, b); | 
|  | static extension-member method Extension1|method2<X extends self::A<self::Extension1|method2::X%>? = self::A<dynamic>?, Y extends core::String>(lowered final self::A<self::Extension1|method2::X%> #this, self::D<self::Extension1|method2::Y> a, self::D<core::String>? b) → void { | 
|  | self::D<self::Extension1|method2::Y>? c; | 
|  | self::D<core::String>? d; | 
|  | } | 
|  | static extension-member method Extension1|get#method2<X extends self::A<self::Extension1|get#method2::X%>? = self::A<dynamic>?>(lowered final self::A<self::Extension1|get#method2::X%> #this) → <Y extends core::String>(self::D<Y>, self::D<core::String>?) → void | 
|  | return <Y extends core::String>(self::D<Y> a, self::D<core::String>? b) → void => self::Extension1|method2<self::Extension1|get#method2::X%, Y>(#this, a, b); | 
|  | static method test() → dynamic { | 
|  | self::A<Null> a = new self::A::•<Null>(); | 
|  | } | 
|  | static method main() → dynamic {} |