| library; | 
 | import self as self; | 
 | import "dart:core" as core; | 
 |  | 
 | static method main() → dynamic { | 
 |   lowered has-declared-initializer core::int? #lateLocal; | 
 |   function #lateLocal#get() → core::int | 
 |     return let final core::int? #t1 = #lateLocal in #t1 == null ?{core::int} #lateLocal = 123 : #t1{core::int}; | 
 |   function #lateLocal#set(core::int lateLocal#param) → dynamic | 
 |     return #lateLocal = lateLocal#param; | 
 |   self::expect(123, #lateLocal#get(){() → core::int}); | 
 |   self::expect(124, #lateLocal#set(124){(core::int) → dynamic}); | 
 |   self::expect(124, #lateLocal#get(){() → core::int}); | 
 |   function local<T extends core::Object? = dynamic>(T% value1, T% value2) → Null { | 
 |     lowered has-declared-initializer T? #lateGenericLocal; | 
 |     lowered core::bool #lateGenericLocal#isSet = false; | 
 |     function #lateGenericLocal#get() → T% { | 
 |       if(!#lateGenericLocal#isSet) { | 
 |         #lateGenericLocal = value1; | 
 |         #lateGenericLocal#isSet = true; | 
 |       } | 
 |       return #lateGenericLocal{T%}; | 
 |     } | 
 |     function #lateGenericLocal#set(T% lateGenericLocal#param) → dynamic { | 
 |       #lateGenericLocal#isSet = true; | 
 |       return #lateGenericLocal = lateGenericLocal#param; | 
 |     } | 
 |     self::expect(value1, #lateGenericLocal#get(){() → T%}); | 
 |     self::expect(value2, #lateGenericLocal#set(value2){(T%) → dynamic}); | 
 |     self::expect(value2, #lateGenericLocal#get(){() → T%}); | 
 |   } | 
 |   local<core::int?>(null, 0){(core::int?, core::int?) → Null}; | 
 |   local<core::int?>(0, null){(core::int?, core::int?) → Null}; | 
 |   local<core::int>(0, 42){(core::int, core::int) → Null}; | 
 | } | 
 | static method expect(dynamic expected, dynamic actual) → dynamic { | 
 |   if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) | 
 |     throw "Expected ${expected}, actual ${actual}"; | 
 | } |