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

class Class<T extends core::Object? = dynamic> 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;
  final field self::Class::T% field;
  covariant-by-class field self::Class::T? _#Class#lateGenericField1 = null;
  field core::bool _#Class#lateGenericField1#isSet = false;
  covariant-by-class field self::Class::T? _#Class#lateGenericField2 = null;
  field core::bool _#Class#lateGenericField2#isSet = false;
  constructor •(self::Class::T% field) → self::Class<self::Class::T%>
    : self::Class::field = field, super core::Object::•()
    ;
  static get lateStaticField1() → core::int {
    if(!self::Class::_#lateStaticField1#isSet) {
      self::Class::_#lateStaticField1 = 87;
      self::Class::_#lateStaticField1#isSet = true;
    }
    return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1{core::int};
  }
  static set lateStaticField1(core::int lateStaticField1#param) → void {
    self::Class::_#lateStaticField1#isSet = true;
    self::Class::_#lateStaticField1 = lateStaticField1#param;
  }
  static get lateStaticField2() → core::int {
    if(!self::Class::_#lateStaticField2#isSet) {
      self::Class::_#lateStaticField2 = 42;
      self::Class::_#lateStaticField2#isSet = true;
    }
    return let final core::int? #t2 = self::Class::_#lateStaticField2 in #t2{core::int};
  }
  static set lateStaticField2(core::int lateStaticField2#param) → void {
    self::Class::_#lateStaticField2#isSet = true;
    self::Class::_#lateStaticField2 = lateStaticField2#param;
  }
  static method staticMethod() → dynamic {
    self::expect(42, self::Class::lateStaticField2);
    self::Class::lateStaticField2 = 43;
    self::expect(43, self::Class::lateStaticField2);
  }
  get lateInstanceField() → core::int {
    if(!this.{self::Class::_#Class#lateInstanceField#isSet}{core::bool}) {
      this.{self::Class::_#Class#lateInstanceField} = 16;
      this.{self::Class::_#Class#lateInstanceField#isSet} = true;
    }
    return let final core::int? #t3 = this.{self::Class::_#Class#lateInstanceField}{core::int?} in #t3{core::int};
  }
  set lateInstanceField(core::int lateInstanceField#param) → void {
    this.{self::Class::_#Class#lateInstanceField#isSet} = true;
    this.{self::Class::_#Class#lateInstanceField} = lateInstanceField#param;
  }
  get lateGenericField1() → self::Class::T% {
    if(!this.{self::Class::_#Class#lateGenericField1#isSet}{core::bool}) {
      this.{self::Class::_#Class#lateGenericField1} = this.{self::Class::field}{self::Class::T%};
      this.{self::Class::_#Class#lateGenericField1#isSet} = true;
    }
    return let final self::Class::T? #t4 = this.{self::Class::_#Class#lateGenericField1}{self::Class::T?} in #t4{self::Class::T%};
  }
  set lateGenericField1(covariant-by-class self::Class::T% lateGenericField1#param) → void {
    this.{self::Class::_#Class#lateGenericField1#isSet} = true;
    this.{self::Class::_#Class#lateGenericField1} = lateGenericField1#param;
  }
  get lateGenericField2() → self::Class::T% {
    if(!this.{self::Class::_#Class#lateGenericField2#isSet}{core::bool}) {
      this.{self::Class::_#Class#lateGenericField2} = this.{self::Class::field}{self::Class::T%};
      this.{self::Class::_#Class#lateGenericField2#isSet} = true;
    }
    return let final self::Class::T? #t5 = this.{self::Class::_#Class#lateGenericField2}{self::Class::T?} in #t5{self::Class::T%};
  }
  set lateGenericField2(covariant-by-class self::Class::T% lateGenericField2#param) → void {
    this.{self::Class::_#Class#lateGenericField2#isSet} = true;
    this.{self::Class::_#Class#lateGenericField2} = lateGenericField2#param;
  }
  method instanceMethod(covariant-by-class self::Class::T% value) → dynamic {
    self::expect(16, this.{self::Class::lateInstanceField}{core::int});
    this.{self::Class::lateInstanceField} = 17;
    self::expect(17, this.{self::Class::lateInstanceField}{core::int});
    self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericField1}{self::Class::T%});
    this.{self::Class::lateGenericField1} = value;
    self::expect(value, this.{self::Class::lateGenericField1}{self::Class::T%});
    this.{self::Class::lateGenericField2} = value;
    self::expect(value, this.{self::Class::lateGenericField2}{self::Class::T%});
  }
}
extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
  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? _#lateTopLevelField1 = null;
static field core::bool _#lateTopLevelField1#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 lateTopLevelField1() → core::int {
  if(!self::_#lateTopLevelField1#isSet) {
    self::_#lateTopLevelField1 = 123;
    self::_#lateTopLevelField1#isSet = true;
  }
  return let final core::int? #t6 = self::_#lateTopLevelField1 in #t6{core::int};
}
static set lateTopLevelField1(core::int lateTopLevelField1#param) → void {
  self::_#lateTopLevelField1#isSet = true;
  self::_#lateTopLevelField1 = lateTopLevelField1#param;
}
static get Extension|lateExtensionField1() → core::int {
  if(!self::_#Extension|lateExtensionField1#isSet) {
    self::_#Extension|lateExtensionField1 = 87;
    self::_#Extension|lateExtensionField1#isSet = true;
  }
  return let final core::int? #t7 = self::_#Extension|lateExtensionField1 in #t7{core::int};
}
static set Extension|lateExtensionField1(core::int Extension|lateExtensionField1#param) → void {
  self::_#Extension|lateExtensionField1#isSet = true;
  self::_#Extension|lateExtensionField1 = Extension|lateExtensionField1#param;
}
static get Extension|lateExtensionField2() → core::int {
  if(!self::_#Extension|lateExtensionField2#isSet) {
    self::_#Extension|lateExtensionField2 = 42;
    self::_#Extension|lateExtensionField2#isSet = true;
  }
  return let final core::int? #t8 = self::_#Extension|lateExtensionField2 in #t8{core::int};
}
static set Extension|lateExtensionField2(core::int Extension|lateExtensionField2#param) → void {
  self::_#Extension|lateExtensionField2#isSet = true;
  self::_#Extension|lateExtensionField2 = Extension|lateExtensionField2#param;
}
static method Extension|staticMethod() → dynamic {
  self::expect(42, self::Extension|lateExtensionField2);
  self::Extension|lateExtensionField2 = 43;
  self::expect(43, self::Extension|lateExtensionField2);
}
static method main() → dynamic {
  self::expect(123, self::lateTopLevelField1);
  self::lateTopLevelField1 = 124;
  self::expect(124, self::lateTopLevelField1);
  self::expect(87, self::Class::lateStaticField1);
  self::Class::lateStaticField1 = 88;
  self::expect(88, self::Class::lateStaticField1);
  self::Class::staticMethod();
  new self::Class::•<core::int>(0).{self::Class::instanceMethod}(42){(core::int) → dynamic};
  self::expect(87, self::Extension|lateExtensionField1);
  self::Extension|lateExtensionField1 = 88;
  self::expect(88, self::Extension|lateExtensionField1);
  self::Extension|staticMethod();
}
static method expect(dynamic expected, dynamic actual) → dynamic {
  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
    throw "Expected ${expected}, actual ${actual}";
}
