| library /*isNonNullableByDefault*/; | 
 | import self as self; | 
 | import "dart:core" as core; | 
 |  | 
 | class Class extends core::Object { | 
 |   field core::int? _#Class#field = null; | 
 |   field core::bool _#Class#field#isSet = false; | 
 |   constructor constructor1() → self::Class | 
 |     : super core::Object::•() | 
 |     ; | 
 |   constructor constructor2(core::int field) → self::Class | 
 |     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•() | 
 |     ; | 
 |   constructor constructor3(core::int value) → self::Class | 
 |     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = value.{core::num::+}(1){(core::num) → core::int}, super core::Object::•() | 
 |     ; | 
 |   constructor constructor4([core::int field = #C1]) → self::Class | 
 |     : self::Class::_#Class#field#isSet = true, self::Class::_#Class#field = field, super core::Object::•() | 
 |     ; | 
 |   get field() → core::int { | 
 |     if(!this.{self::Class::_#Class#field#isSet}{core::bool}) { | 
 |       this.{self::Class::_#Class#field} = 10; | 
 |       this.{self::Class::_#Class#field#isSet} = true; | 
 |     } | 
 |     return let final core::int? #t1 = this.{self::Class::_#Class#field}{core::int?} in #t1{core::int}; | 
 |   } | 
 |   set field(core::int #t2) → void { | 
 |     this.{self::Class::_#Class#field#isSet} = true; | 
 |     this.{self::Class::_#Class#field} = #t2; | 
 |   } | 
 | } | 
 | class Subclass extends self::Class { | 
 |   constructor constructor1() → self::Subclass | 
 |     : super self::Class::constructor1() | 
 |     ; | 
 |   constructor constructor2(core::int value) → self::Subclass | 
 |     : super self::Class::constructor2(value) | 
 |     ; | 
 |   constructor constructor3(core::int value) → self::Subclass | 
 |     : super self::Class::constructor3(value) | 
 |     ; | 
 |   constructor constructor4([core::int value = #C2]) → self::Subclass | 
 |     : super self::Class::constructor4(value) | 
 |     ; | 
 | } | 
 | static method test1() → dynamic { | 
 |   self::Class c1 = new self::Class::constructor1(); | 
 |   self::expect(10, c1.{self::Class::field}{core::int}); | 
 |   c1.{self::Class::field} = 16; | 
 |   self::expect(16, c1.{self::Class::field}{core::int}); | 
 |   self::Class c2 = new self::Class::constructor2(42); | 
 |   self::expect(42, c2.{self::Class::field}{core::int}); | 
 |   c2.{self::Class::field} = 43; | 
 |   self::expect(43, c2.{self::Class::field}{core::int}); | 
 |   self::Class c3 = new self::Class::constructor3(87); | 
 |   self::expect(88, c3.{self::Class::field}{core::int}); | 
 |   c3.{self::Class::field} = 89; | 
 |   self::expect(89, c3.{self::Class::field}{core::int}); | 
 |   self::Class c4 = new self::Class::constructor4(); | 
 |   self::expect(42, c4.{self::Class::field}{core::int}); | 
 |   c4.{self::Class::field} = 43; | 
 |   self::expect(43, c4.{self::Class::field}{core::int}); | 
 |   self::Class c5 = new self::Class::constructor4(123); | 
 |   self::expect(123, c5.{self::Class::field}{core::int}); | 
 |   c5.{self::Class::field} = 124; | 
 |   self::expect(124, c5.{self::Class::field}{core::int}); | 
 | } | 
 | static method test2() → dynamic { | 
 |   self::Subclass c1 = new self::Subclass::constructor1(); | 
 |   self::expect(10, c1.{self::Class::field}{core::int}); | 
 |   c1.{self::Class::field} = 16; | 
 |   self::expect(16, c1.{self::Class::field}{core::int}); | 
 |   self::Subclass c2 = new self::Subclass::constructor2(42); | 
 |   self::expect(42, c2.{self::Class::field}{core::int}); | 
 |   c2.{self::Class::field} = 43; | 
 |   self::expect(43, c2.{self::Class::field}{core::int}); | 
 |   self::Subclass c3 = new self::Subclass::constructor3(87); | 
 |   self::expect(88, c3.{self::Class::field}{core::int}); | 
 |   c3.{self::Class::field} = 89; | 
 |   self::expect(89, c3.{self::Class::field}{core::int}); | 
 |   self::Subclass c4 = new self::Subclass::constructor4(); | 
 |   self::expect(87, c4.{self::Class::field}{core::int}); | 
 |   c4.{self::Class::field} = 88; | 
 |   self::expect(88, c4.{self::Class::field}{core::int}); | 
 |   self::Subclass c5 = new self::Subclass::constructor4(123); | 
 |   self::expect(123, c5.{self::Class::field}{core::int}); | 
 |   c5.{self::Class::field} = 124; | 
 |   self::expect(124, c5.{self::Class::field}{core::int}); | 
 | } | 
 | static method main() → dynamic { | 
 |   self::test1(); | 
 |   self::test2(); | 
 | } | 
 | static method expect(dynamic expected, dynamic actual) → dynamic { | 
 |   if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) | 
 |     throw "Expected ${expected}, actual ${actual}"; | 
 | } | 
 |  | 
 | constants  { | 
 |   #C1 = 42 | 
 |   #C2 = 87 | 
 | } |