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

class C extends core::Object {
  field core::int? _#C#x = null;
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  get x() → core::int
    return let final core::int? #t1 = this.{self::C::_#C#x}{core::int?} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("x") : #t1{core::int};
  set x(covariant core::int #t2) → void
    if(this.{self::C::_#C#x}{core::int?} == null)
      this.{self::C::_#C#x} = #t2;
    else
      throw new _in::LateError::fieldAI("x");
}
class D extends self::C {
  synthetic constructor •() → self::D
    : super self::C::•()
    ;
  set x(covariant core::num value) → void {
    super.{self::C::x} = value.{core::num::toInt}(){() → core::int};
  }
}
static method main() → dynamic {
  new self::D::•().{self::D::x} = 3.14;
}
