library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart:32:26: Error: The parameter 'i' of the method 'B2.property6' has type 'int', which does not match the corresponding type, 'int?', in the overridden method, 'B1.property6'.
// Change to a supertype of 'int?', or, for a covariant parameter, a subtype.
//   void set property6(int i); // error
//                          ^
// pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart:20:19: Context: This is the overridden method ('property6').
//   late final int? property6;
//                   ^
//
// pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart:32:12: Error: The type 'int?' of the inherited getter 'B1.property6' is not a subtype of the type 'int' of the setter 'B2.property6'.
//   void set property6(int i); // error
//            ^^^^^^^^^
// pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart:20:19: Context: This is the declaration of the getter 'B1.property6'.
//   late final int? property6;
//                   ^^^^^^^^^
//
// pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart:52:12: Error: The return type of the method 'C2.property6' is 'int?', which does not match the return type, 'int', of the overridden method, 'C1.property6'.
// Change to a subtype of 'int'.
//   int? get property6; // error
//            ^
// pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart:40:12: Context: This is the overridden method ('property6').
//   late int property6;
//            ^
//
// pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart:52:12: Error: The type 'int?' of the getter 'C2.property6' is not a subtype of the type 'int' of the inherited setter 'C1.property6'.
//   int? get property6; // error
//            ^^^^^^^^^
// pkg/front_end/testcases/late_lowering/getter_vs_setter_type.dart:40:12: Context: This is the declaration of the setter 'C1.property6'.
//   late int property6;
//            ^^^^^^^^^
//
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;

abstract class A extends core::Object {
  field core::int? _#A#property4 = null;
  field core::bool _#A#property4#isSet = false;
  field core::int? _#A#property5 = null;
  field core::bool _#A#property5#isSet = false;
  field core::int? _#A#property6 = null;
  field core::bool _#A#property6#isSet = false;
  constructor •(core::int property4, core::int? property5, core::int property6) → self::A
    : self::A::_#A#property4#isSet = true, self::A::_#A#property4 = property4, self::A::_#A#property5#isSet = true, self::A::_#A#property5 = property5, self::A::_#A#property6#isSet = true, self::A::_#A#property6 = property6, super core::Object::•()
    ;
  get property4() → core::int
    return this.{self::A::_#A#property4#isSet} ?{core::int} let final core::int? #t1 = this.{self::A::_#A#property4} in #t1{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'property4' has not been initialized.");
  set property4(core::int #t2) → void {
    this.{self::A::_#A#property4#isSet} = true;
    this.{self::A::_#A#property4} = #t2;
  }
  get property5() → core::int?
    return this.{self::A::_#A#property5#isSet} ?{core::int?} this.{self::A::_#A#property5} : throw new _in::LateInitializationErrorImpl::•("Field 'property5' has not been initialized.");
  set property5(core::int? #t3) → void {
    this.{self::A::_#A#property5#isSet} = true;
    this.{self::A::_#A#property5} = #t3;
  }
  get property6() → core::int
    return this.{self::A::_#A#property6#isSet} ?{core::int} let final core::int? #t4 = this.{self::A::_#A#property6} in #t4{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'property6' has not been initialized.");
  set property6(covariant core::int #t5) → void {
    this.{self::A::_#A#property6#isSet} = true;
    this.{self::A::_#A#property6} = #t5;
  }
}
abstract class B1 extends core::Object {
  field core::int? _#B1#property4 = null;
  field core::bool _#B1#property4#isSet = false;
  field core::int? _#B1#property5 = null;
  field core::bool _#B1#property5#isSet = false;
  field core::int? _#B1#property6 = null;
  field core::bool _#B1#property6#isSet = false;
  constructor •(core::int property4, core::int property5, core::int? property6) → self::B1
    : self::B1::_#B1#property4#isSet = true, self::B1::_#B1#property4 = property4, self::B1::_#B1#property5#isSet = true, self::B1::_#B1#property5 = property5, self::B1::_#B1#property6#isSet = true, self::B1::_#B1#property6 = property6, super core::Object::•()
    ;
  get property4() → core::int
    return this.{self::B1::_#B1#property4#isSet} ?{core::int} let final core::int? #t6 = this.{self::B1::_#B1#property4} in #t6{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'property4' has not been initialized.");
  set property4(core::int #t7) → void
    if(this.{self::B1::_#B1#property4#isSet})
      throw new _in::LateInitializationErrorImpl::•("Field 'property4' has already been initialized.");
    else {
      this.{self::B1::_#B1#property4#isSet} = true;
      this.{self::B1::_#B1#property4} = #t7;
    }
  get property5() → core::int
    return this.{self::B1::_#B1#property5#isSet} ?{core::int} let final core::int? #t8 = this.{self::B1::_#B1#property5} in #t8{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'property5' has not been initialized.");
  set property5(core::int #t9) → void
    if(this.{self::B1::_#B1#property5#isSet})
      throw new _in::LateInitializationErrorImpl::•("Field 'property5' has already been initialized.");
    else {
      this.{self::B1::_#B1#property5#isSet} = true;
      this.{self::B1::_#B1#property5} = #t9;
    }
  get property6() → core::int?
    return this.{self::B1::_#B1#property6#isSet} ?{core::int?} this.{self::B1::_#B1#property6} : throw new _in::LateInitializationErrorImpl::•("Field 'property6' has not been initialized.");
  set property6(core::int? #t10) → void
    if(this.{self::B1::_#B1#property6#isSet})
      throw new _in::LateInitializationErrorImpl::•("Field 'property6' has already been initialized.");
    else {
      this.{self::B1::_#B1#property6#isSet} = true;
      this.{self::B1::_#B1#property6} = #t10;
    }
}
abstract class B2 extends core::Object implements self::B1 {
  synthetic constructor •() → self::B2
    : super core::Object::•()
    ;
  abstract set property4(core::int i) → void;
  abstract set property5(core::int? i) → void;
  abstract set property6(core::int i) → void;
}
abstract class C1 extends core::Object {
  field core::int? _#C1#property4 = null;
  field core::bool _#C1#property4#isSet = false;
  field core::int? _#C1#property5 = null;
  field core::bool _#C1#property5#isSet = false;
  field core::int? _#C1#property6 = null;
  field core::bool _#C1#property6#isSet = false;
  constructor •(core::int property4, core::int property5, core::int property6) → self::C1
    : self::C1::_#C1#property4#isSet = true, self::C1::_#C1#property4 = property4, self::C1::_#C1#property5#isSet = true, self::C1::_#C1#property5 = property5, self::C1::_#C1#property6#isSet = true, self::C1::_#C1#property6 = property6, super core::Object::•()
    ;
  get property4() → core::int
    return this.{self::C1::_#C1#property4#isSet} ?{core::int} let final core::int? #t11 = this.{self::C1::_#C1#property4} in #t11{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'property4' has not been initialized.");
  set property4(core::int #t12) → void {
    this.{self::C1::_#C1#property4#isSet} = true;
    this.{self::C1::_#C1#property4} = #t12;
  }
  get property5() → core::int
    return this.{self::C1::_#C1#property5#isSet} ?{core::int} let final core::int? #t13 = this.{self::C1::_#C1#property5} in #t13{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'property5' has not been initialized.");
  set property5(core::int #t14) → void {
    this.{self::C1::_#C1#property5#isSet} = true;
    this.{self::C1::_#C1#property5} = #t14;
  }
  get property6() → core::int
    return this.{self::C1::_#C1#property6#isSet} ?{core::int} let final core::int? #t15 = this.{self::C1::_#C1#property6} in #t15{core::int} : throw new _in::LateInitializationErrorImpl::•("Field 'property6' has not been initialized.");
  set property6(core::int #t16) → void {
    this.{self::C1::_#C1#property6#isSet} = true;
    this.{self::C1::_#C1#property6} = #t16;
  }
}
abstract class C2 extends core::Object implements self::C1 {
  synthetic constructor •() → self::C2
    : super core::Object::•()
    ;
  abstract get property4() → core::int;
  abstract get property5() → core::int;
  abstract get property6() → core::int?;
}
static method main() → dynamic {}
