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

class Class extends core::Object {
  static field core::int? _#lateStaticField1 = null;
  static field core::bool _#lateStaticField1#isSet = false;
  static field core::int? _#lateStaticField2 = null;
  static field core::bool _#lateStaticField2#isSet = false;
  field core::int? _#Class#lateInstanceField = null;
  field core::bool _#Class#lateInstanceField#isSet = false;
  synthetic constructor •() → self::Class
    : super core::Object::•()
    ;
  static get lateStaticField1() → core::int
    return self::Class::_#lateStaticField1#isSet ?{core::int} let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'lateStaticField1' has not been initialized.");
  static set lateStaticField1(core::int #t2) → void
    if(self::Class::_#lateStaticField1#isSet)
      throw new _in::LateInitializationErrorImpl::•("Field 'lateStaticField1' has already been initialized.");
    else {
      self::Class::_#lateStaticField1#isSet = true;
      self::Class::_#lateStaticField1 = #t2;
    }
  static get lateStaticField2() → core::int
    return self::Class::_#lateStaticField2#isSet ?{core::int} let final core::int? #t3 = self::Class::_#lateStaticField2 in #t3{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'lateStaticField2' has not been initialized.");
  static set lateStaticField2(core::int #t4) → void
    if(self::Class::_#lateStaticField2#isSet)
      throw new _in::LateInitializationErrorImpl::•("Field 'lateStaticField2' has already been initialized.");
    else {
      self::Class::_#lateStaticField2#isSet = true;
      self::Class::_#lateStaticField2 = #t4;
    }
  static method staticMethod() → dynamic {
    self::throws(() → core::int => self::Class::lateStaticField2, "Read value from uninitialized Class.lateStaticField2");
    self::Class::lateStaticField2 = 42;
    self::expect(42, self::Class::lateStaticField2);
    self::throws(() → core::int => self::Class::lateStaticField2 = 43, "Write value to initialized Class.lateStaticField2");
  }
  get lateInstanceField() → core::int
    return this.{self::Class::_#Class#lateInstanceField#isSet} ?{core::int} let final core::int? #t5 = this.{self::Class::_#Class#lateInstanceField} in #t5{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'lateInstanceField' has not been initialized.");
  set lateInstanceField(core::int #t6) → void
    if(this.{self::Class::_#Class#lateInstanceField#isSet})
      throw new _in::LateInitializationErrorImpl::•("Field 'lateInstanceField' has already been initialized.");
    else {
      this.{self::Class::_#Class#lateInstanceField#isSet} = true;
      this.{self::Class::_#Class#lateInstanceField} = #t6;
    }
  method instanceMethod() → dynamic {
    self::throws(() → core::int => this.{self::Class::lateInstanceField}, "Read value from uninitialized Class.lateInstanceField");
    this.{self::Class::lateInstanceField} = 16;
    self::expect(16, this.{self::Class::lateInstanceField});
    self::throws(() → core::int => this.{self::Class::lateInstanceField} = 17, "Write value to initialized Class.lateInstanceField");
  }
}
extension Extension on self::Class {
  static field lateExtensionField1 = self::_#Extension|lateExtensionField1;
  static field lateExtensionField1 = self::_#Extension|lateExtensionField1#isSet;
  static get lateExtensionField1 = get self::Extension|lateExtensionField1;
  static set lateExtensionField1 = set self::Extension|lateExtensionField1;
  static field lateExtensionField2 = self::_#Extension|lateExtensionField2;
  static field lateExtensionField2 = self::_#Extension|lateExtensionField2#isSet;
  static get lateExtensionField2 = get self::Extension|lateExtensionField2;
  static set lateExtensionField2 = set self::Extension|lateExtensionField2;
  static method staticMethod = self::Extension|staticMethod;
}
static field core::int? _#lateTopLevelField = null;
static field core::bool _#lateTopLevelField#isSet = false;
static field core::int? _#Extension|lateExtensionField1 = null;
static field core::bool _#Extension|lateExtensionField1#isSet = false;
static field core::int? _#Extension|lateExtensionField2 = null;
static field core::bool _#Extension|lateExtensionField2#isSet = false;
static get lateTopLevelField() → core::int
  return self::_#lateTopLevelField#isSet ?{core::int} let final core::int? #t7 = self::_#lateTopLevelField in #t7{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'lateTopLevelField' has not been initialized.");
static set lateTopLevelField(core::int #t8) → void
  if(self::_#lateTopLevelField#isSet)
    throw new _in::LateInitializationErrorImpl::•("Field 'lateTopLevelField' has already been initialized.");
  else {
    self::_#lateTopLevelField#isSet = true;
    self::_#lateTopLevelField = #t8;
  }
static get Extension|lateExtensionField1() → core::int
  return self::_#Extension|lateExtensionField1#isSet ?{core::int} let final core::int? #t9 = self::_#Extension|lateExtensionField1 in #t9{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'lateExtensionField1' has not been initialized.");
static set Extension|lateExtensionField1(core::int #t10) → void
  if(self::_#Extension|lateExtensionField1#isSet)
    throw new _in::LateInitializationErrorImpl::•("Field 'lateExtensionField1' has already been initialized.");
  else {
    self::_#Extension|lateExtensionField1#isSet = true;
    self::_#Extension|lateExtensionField1 = #t10;
  }
static get Extension|lateExtensionField2() → core::int
  return self::_#Extension|lateExtensionField2#isSet ?{core::int} let final core::int? #t11 = self::_#Extension|lateExtensionField2 in #t11{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'lateExtensionField2' has not been initialized.");
static set Extension|lateExtensionField2(core::int #t12) → void
  if(self::_#Extension|lateExtensionField2#isSet)
    throw new _in::LateInitializationErrorImpl::•("Field 'lateExtensionField2' has already been initialized.");
  else {
    self::_#Extension|lateExtensionField2#isSet = true;
    self::_#Extension|lateExtensionField2 = #t12;
  }
static method Extension|staticMethod() → dynamic {
  self::throws(() → core::int => self::Extension|lateExtensionField2, "Read value from uninitialized Class.lateExtensionField2");
  self::Extension|lateExtensionField2 = 42;
  self::expect(42, self::Extension|lateExtensionField2);
  self::throws(() → core::int => self::Extension|lateExtensionField2 = 43, "Write value to initialized Class.lateExtensionField2");
}
static method main() → dynamic {
  self::throws(() → core::int => self::lateTopLevelField, "Read value from uninitialized lateTopLevelField");
  self::lateTopLevelField = 123;
  self::expect(123, self::lateTopLevelField);
  self::throws(() → core::int => self::lateTopLevelField = 124, "Write value to initialized lateTopLevelField");
  self::throws(() → core::int => self::Class::lateStaticField1, "Read value from uninitialized Class.lateStaticField1");
  self::Class::lateStaticField1 = 87;
  self::expect(87, self::Class::lateStaticField1);
  self::throws(() → core::int => self::Class::lateStaticField1 = 88, "Write value to initialized Class.lateStaticField1");
  self::Class::staticMethod();
  new self::Class::•().{self::Class::instanceMethod}();
  self::throws(() → core::int => self::Extension|lateExtensionField1, "Read value from uninitialized Extension.lateExtensionField1");
  self::Extension|lateExtensionField1 = 87;
  self::expect(87, self::Extension|lateExtensionField1);
  self::throws(() → core::int => self::Extension|lateExtensionField1 = 88, "Write value to initialized Extension.lateExtensionField1");
  self::Extension|staticMethod();
}
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}";
}
