|  | library /*isNonNullableByDefault*/; | 
|  | import self as self; | 
|  | import "dart:core" as core; | 
|  |  | 
|  | class Class<T extends core::Object? = dynamic> extends core::Object { | 
|  | synthetic constructor •() → self::Class<self::Class::T%> | 
|  | : super core::Object::•() | 
|  | ; | 
|  | method method(covariant-by-class self::Class::T% a) → self::Class::T% | 
|  | return a; | 
|  | } | 
|  | extension Extension<T extends core::Object? = dynamic> on self::Class<T%> { | 
|  | method call = self::Extension|call; | 
|  | tearoff call = self::Extension|get#call; | 
|  | } | 
|  | static method Extension|call<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|call::T%> #this, self::Extension|call::T% a) → self::Extension|call::T% | 
|  | return #this.{self::Class::method}(a){(self::Extension|call::T%) → self::Extension|call::T%}; | 
|  | static method Extension|get#call<T extends core::Object? = dynamic>(lowered final self::Class<self::Extension|get#call::T%> #this) → (self::Extension|get#call::T%) → self::Extension|get#call::T% | 
|  | return (self::Extension|get#call::T% a) → self::Extension|get#call::T% => self::Extension|call<self::Extension|get#call::T%>(#this, a); | 
|  | static method main() → dynamic { | 
|  | self::Class<core::int> c = new self::Class::•<core::int>(); | 
|  | self::expect(42, self::Extension|call<core::int>(c, 42)); | 
|  | self::expect(87, self::Extension|call<core::int>(c, 87)); | 
|  | self::expect(123, self::Extension|call<core::int>(c, 123)); | 
|  | self::expect(42, self::Extension|call<core::int>(c, 42)); | 
|  | self::expect(87, self::Extension|call<core::int>(c, 87)); | 
|  | self::expect(123, self::Extension|call<core::int>(c, 123)); | 
|  | } | 
|  | static method expect(dynamic expected, dynamic actual) → dynamic { | 
|  | if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) { | 
|  | throw "Mismatch: expected=${expected}, actual=${actual}"; | 
|  | } | 
|  | } |