| library; | 
 | import self as self; | 
 | import "dart:core" as core; | 
 |  | 
 | class A1 extends core::Object { | 
 |   synthetic constructor •() → self::A1 | 
 |     ; | 
 | } | 
 | class B1<T extends core::Object? = dynamic> extends core::Object { | 
 |   synthetic constructor •() → self::B1<self::B1::T%> | 
 |     ; | 
 | } | 
 | extension A2 on self::A1 { | 
 |   method method1 = self::A2|method1; | 
 |   method tearoff method1 = self::A2|get#method1; | 
 |   method method2 = self::A2|method2; | 
 |   method tearoff method2 = self::A2|get#method2; | 
 |   method method3 = self::A2|method3; | 
 |   method tearoff method3 = self::A2|get#method3; | 
 |   method method4 = self::A2|method4; | 
 |   method tearoff method4 = self::A2|get#method4; | 
 | } | 
 | extension B2<T extends core::Object? = dynamic> on self::B1<T%> { | 
 |   method method1 = self::B2|method1; | 
 |   method tearoff method1 = self::B2|get#method1; | 
 |   method method2 = self::B2|method2; | 
 |   method tearoff method2 = self::B2|get#method2; | 
 | } | 
 | static extension-member method A2|method1(lowered final self::A1 #this) → self::A1 | 
 |   ; | 
 | static extension-member method A2|get#method1(lowered final self::A1 #this) → () → self::A1 | 
 |   return () → self::A1 => self::A2|method1(#this); | 
 | static extension-member method A2|method2<T extends core::Object? = dynamic>(lowered final self::A1 #this, self::A2|method2::T% o) → self::A1 | 
 |   ; | 
 | static extension-member method A2|get#method2(lowered final self::A1 #this) → <T extends core::Object? = dynamic>(T%) → self::A1 | 
 |   return <T extends core::Object? = dynamic>(T% o) → self::A1 => self::A2|method2<T%>(#this, o); | 
 | static extension-member method A2|method3<T extends core::Object? = dynamic>(lowered final self::A1 #this, [self::A2|method3::T? o]) → self::A1 | 
 |   ; | 
 | static extension-member method A2|get#method3(lowered final self::A1 #this) → <T extends core::Object? = dynamic>([T?]) → self::A1 | 
 |   return <T extends core::Object? = dynamic>([T? o]) → self::A1 => self::A2|method3<T%>(#this, o); | 
 | static extension-member method A2|method4<T extends core::Object? = dynamic>(lowered final self::A1 #this, {self::A2|method4::T? o}) → self::A1 | 
 |   ; | 
 | static extension-member method A2|get#method4(lowered final self::A1 #this) → <T extends core::Object? = dynamic>({o: T?}) → self::A1 | 
 |   return <T extends core::Object? = dynamic>({T? o}) → self::A1 => self::A2|method4<T%>(#this, o: o); | 
 | static extension-member method B2|method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|method1::T%> #this) → self::B1<self::B2|method1::T%> | 
 |   ; | 
 | static extension-member method B2|get#method1<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method1::T%> #this) → () → self::B1<self::B2|get#method1::T%> | 
 |   return () → self::B1<self::B2|get#method1::T%> => self::B2|method1<self::B2|get#method1::T%>(#this); | 
 | static extension-member method B2|method2<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::B1<self::B2|method2::T%> #this, self::B2|method2::S% o) → self::B1<self::B2|method2::T%> | 
 |   ; | 
 | static extension-member method B2|get#method2<T extends core::Object? = dynamic>(lowered final self::B1<self::B2|get#method2::T%> #this) → <S extends core::Object? = dynamic>(S%) → self::B1<self::B2|get#method2::T%> | 
 |   return <S extends core::Object? = dynamic>(S% o) → self::B1<self::B2|get#method2::T%> => self::B2|method2<self::B2|get#method2::T%, S%>(#this, o); | 
 | static method main() → dynamic | 
 |   ; |