| library /*isNonNullableByDefault*/; | 
 | import self as self; | 
 | import "dart:core" as core; | 
 |  | 
 | static method main() → dynamic { | 
 |   lowered core::int? #lateLocal; | 
 |   lowered core::bool #lateLocal#isSet = false; | 
 |   function #lateLocal#get() → core::int { | 
 |     if(!#lateLocal#isSet) { | 
 |       #lateLocal = 123; | 
 |       #lateLocal#isSet = true; | 
 |     } | 
 |     return #lateLocal{core::int}; | 
 |   } | 
 |   function #lateLocal#set(core::int #t1) → dynamic { | 
 |     #lateLocal#isSet = true; | 
 |     return #lateLocal = #t1; | 
 |   } | 
 |   self::expect(123, #lateLocal#get.call()); | 
 |   self::expect(124, #lateLocal#set.call(124)); | 
 |   self::expect(124, #lateLocal#get.call()); | 
 |   function local<T extends core::Object? = dynamic>(T% value1, T% value2) → Null { | 
 |     lowered 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% #t2) → dynamic { | 
 |       #lateGenericLocal#isSet = true; | 
 |       return #lateGenericLocal = #t2; | 
 |     } | 
 |     self::expect(value1, #lateGenericLocal#get.call()); | 
 |     self::expect(value2, #lateGenericLocal#set.call(value2)); | 
 |     self::expect(value2, #lateGenericLocal#get.call()); | 
 |   } | 
 |   local.call<core::int?>(null, 0); | 
 |   local.call<core::int?>(0, null); | 
 |   local.call<core::int>(0, 42); | 
 | } | 
 | static method expect(dynamic expected, dynamic actual) → dynamic { | 
 |   if(!expected.{core::Object::==}(actual)) | 
 |     throw "Expected ${expected}, actual ${actual}"; | 
 | } |