| library; | 
 | import self as self; | 
 | import "dart:core" as core; | 
 |  | 
 | typedef Exactly<invariant X extends core::Object? = dynamic> = (X%) → X%; | 
 | class C extends core::Object { | 
 |   synthetic constructor •() → self::C | 
 |     : super core::Object::•() | 
 |     ; | 
 |   method call<T extends core::Object? = dynamic>(self::C::call::T% t) → self::C::call::T% | 
 |     return t; | 
 | } | 
 | class Checker<X extends core::Object? = dynamic> extends core::Object { | 
 |   final field self::Checker::X% x; | 
 |   constructor •(self::Checker::X% x) → self::Checker<self::Checker::X%> | 
 |     : self::Checker::x = x, super core::Object::•() | 
 |     ; | 
 |   method expectStaticType<covariant-by-class Y extends (self::Checker::X%) → self::Checker::X%>() → self::Checker::X% | 
 |     return this.{self::Checker::x}{self::Checker::X%}; | 
 | } | 
 | static method f<X extends core::Object? = dynamic>((core::String) → self::f::X% g) → (core::String) → self::f::X% | 
 |   return g; | 
 | static method main() → void { | 
 |   (core::String) → core::String g = self::f<core::String>((let final self::C #t1 = new self::C::•() in #t1 == null ?{<T extends core::Object? = dynamic>(T%) → T%} null : #t1.{self::C::call}{<T extends core::Object? = dynamic>(T%) → T%})<core::String>); | 
 |   new self::Checker::•<(core::String) → core::String>(g).{self::Checker::expectStaticType}<((core::String) → core::String) → (core::String) → core::String>(){() → (core::String) → core::String}; | 
 | } |