library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;

class Class extends core::Object {
  field core::int? _#Class#field1 = null;
  field core::bool _#Class#field1#isSet = false;
  field core::int? _#Class#field2 = null;
  field core::bool _#Class#field2#isSet = false;
  field core::int? _#Class#field3 = null;
  field core::bool _#Class#field3#isSet = false;
  field core::int? _#Class#field4 = null;
  field core::bool _#Class#field4#isSet = false;
  synthetic constructor •() → self::Class
    : super core::Object::•()
    ;
  get field1() → core::int
    return this.{self::Class::_#Class#field1#isSet} ?{core::int} let final core::int? #t1 = this.{self::Class::_#Class#field1} in #t1{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'field1' has not been initialized.");
  set field1(core::int #t2) → void {
    this.{self::Class::_#Class#field1#isSet} = true;
    this.{self::Class::_#Class#field1} = #t2;
  }
  get field2() → core::int
    return this.{self::Class::_#Class#field2#isSet} ?{core::int} let final core::int? #t3 = this.{self::Class::_#Class#field2} in #t3{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'field2' has not been initialized.");
  set field2(core::int #t4) → void {
    this.{self::Class::_#Class#field2#isSet} = true;
    this.{self::Class::_#Class#field2} = #t4;
  }
  get field3() → core::int
    return this.{self::Class::_#Class#field3#isSet} ?{core::int} let final core::int? #t5 = this.{self::Class::_#Class#field3} in #t5{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'field3' has not been initialized.");
  set field3(core::int #t6) → void
    if(this.{self::Class::_#Class#field3#isSet})
      throw new _in::LateInitializationErrorImpl::•("Field 'field3' has already been initialized.");
    else {
      this.{self::Class::_#Class#field3#isSet} = true;
      this.{self::Class::_#Class#field3} = #t6;
    }
  get field4() → core::int
    return this.{self::Class::_#Class#field4#isSet} ?{core::int} let final core::int? #t7 = this.{self::Class::_#Class#field4} in #t7{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'field4' has not been initialized.");
  set field4(core::int #t8) → void
    if(this.{self::Class::_#Class#field4#isSet})
      throw new _in::LateInitializationErrorImpl::•("Field 'field4' has already been initialized.");
    else {
      this.{self::Class::_#Class#field4#isSet} = true;
      this.{self::Class::_#Class#field4} = #t8;
    }
}
class SubClass extends self::Class {
  field core::int? _#SubClass#field1 = null;
  field core::bool _#SubClass#field1#isSet = false;
  field core::int? _#SubClass#field2 = null;
  field core::bool _#SubClass#field2#isSet = false;
  field core::int? _#SubClass#field3 = null;
  field core::bool _#SubClass#field3#isSet = false;
  field core::int? _#SubClass#field4 = null;
  field core::bool _#SubClass#field4#isSet = false;
  synthetic constructor •() → self::SubClass
    : super self::Class::•()
    ;
  get field1() → core::int
    return this.{self::SubClass::_#SubClass#field1#isSet} ?{core::int} let final core::int? #t9 = this.{self::SubClass::_#SubClass#field1} in #t9{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'field1' has not been initialized.");
  set field1(core::int #t10) → void {
    this.{self::SubClass::_#SubClass#field1#isSet} = true;
    this.{self::SubClass::_#SubClass#field1} = #t10;
  }
  get field2() → core::int {
    if(!this.{self::SubClass::_#SubClass#field2#isSet}) {
      this.{self::SubClass::_#SubClass#field2} = 0;
      this.{self::SubClass::_#SubClass#field2#isSet} = true;
    }
    return let final core::int? #t11 = this.{self::SubClass::_#SubClass#field2} in #t11{core::int};
  }
  set field2(core::int #t12) → void {
    this.{self::SubClass::_#SubClass#field2#isSet} = true;
    this.{self::SubClass::_#SubClass#field2} = #t12;
  }
  get field3() → core::int
    return this.{self::SubClass::_#SubClass#field3#isSet} ?{core::int} let final core::int? #t13 = this.{self::SubClass::_#SubClass#field3} in #t13{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'field3' has not been initialized.");
  set field3(core::int #t14) → void
    if(this.{self::SubClass::_#SubClass#field3#isSet})
      throw new _in::LateInitializationErrorImpl::•("Field 'field3' has already been initialized.");
    else {
      this.{self::SubClass::_#SubClass#field3#isSet} = true;
      this.{self::SubClass::_#SubClass#field3} = #t14;
    }
  get field4() → core::int {
    if(!this.{self::SubClass::_#SubClass#field4#isSet}) {
      final core::int #t15 = 0;
      if(this.{self::SubClass::_#SubClass#field4#isSet})
        throw new _in::LateInitializationErrorImpl::•("Field 'field4' has been assigned during initialization.");
      this.{self::SubClass::_#SubClass#field4} = #t15;
      this.{self::SubClass::_#SubClass#field4#isSet} = true;
    }
    return let final core::int? #t16 = this.{self::SubClass::_#SubClass#field4} in #t16{core::int};
  }
  get directField1() → core::int
    return super.{self::Class::field1};
  set directField1(core::int value) → void {
    super.{self::Class::field1} = value;
  }
  get directField2() → core::int
    return super.{self::Class::field2};
  set directField2(core::int value) → void {
    super.{self::Class::field2} = value;
  }
  get directField3() → core::int
    return super.{self::Class::field3};
  get directField4() → core::int
    return super.{self::Class::field4};
}
static method main() → dynamic {
  self::SubClass sc = new self::SubClass::•();
  self::Class c = sc;
  self::throws(() → core::int => c.{self::Class::field1}, "Read value from uninitialized SubClass.field1");
  self::throws(() → core::int => sc.{self::SubClass::directField1}, "Read value from uninitialized Class.field1");
  self::expect(42, c.{self::Class::field1} = 42);
  self::expect(42, c.{self::Class::field1});
  self::throws(() → core::int => sc.{self::SubClass::directField1}, "Read value from uninitialized Class.field1");
  self::expect(87, sc.{self::SubClass::directField1} = 87);
  self::expect(87, sc.{self::SubClass::directField1});
  self::expect(0, c.{self::Class::field2});
  self::throws(() → core::int => sc.{self::SubClass::directField2}, "Read value from uninitialized Class.field2");
  self::expect(42, c.{self::Class::field2} = 42);
  self::expect(42, c.{self::Class::field2});
  self::throws(() → core::int => sc.{self::SubClass::directField2}, "Read value from uninitialized Class.field2");
  self::expect(87, sc.{self::SubClass::directField2} = 87);
  self::expect(87, sc.{self::SubClass::directField2});
  self::throws(() → core::int => c.{self::Class::field3}, "Read value from uninitialized SubClass.field3");
  self::throws(() → core::int => sc.{self::SubClass::directField3}, "Read value from uninitialized Class.field3");
  self::expect(42, c.{self::Class::field3} = 42);
  self::expect(42, c.{self::Class::field3});
  self::throws(() → core::int => sc.{self::SubClass::directField3}, "Read value from uninitialized Class.field3");
  self::throws(() → core::int => c.{self::Class::field3} = 87, "Write value to initialized SubClass.field3");
  self::expect(0, c.{self::Class::field4});
  self::throws(() → core::int => sc.{self::SubClass::directField4}, "Read value from uninitialized Class.field4");
  self::expect(42, c.{self::Class::field4} = 42);
  self::expect(0, c.{self::Class::field4});
  self::expect(42, sc.{self::SubClass::directField4});
  self::throws(() → core::int => c.{self::Class::field4} = 87, "Write value to initialized SubClass.field4");
}
static method expect(dynamic expected, dynamic actual) → dynamic {
  if(!expected.{core::Object::==}(actual))
    throw "Expected ${expected}, actual ${actual}.";
}
static method throws(() → dynamic f, core::String message) → dynamic {
  dynamic value;
  try {
    value = f.call();
  }
  on core::LateInitializationError catch(final core::LateInitializationError e) {
    core::print(e);
    return;
  }
  throw "${message}: ${value}";
}
