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

import "dart:test";

static method main() → dynamic {
  test::A a;
}

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

abstract class A extends core::Object {
  field core::int? _#A#x = null;
  field core::bool _#A#x#isSet = false;
  synthetic constructor •() → test::A
    : super core::Object::•()
    ;
  get x() → core::int
    return this.{test::A::_#A#x#isSet}{core::bool} ?{core::int} let final core::int? #t1 = this.{test::A::_#A#x}{core::int?} in #t1{core::int} : throw new _in::LateError::fieldNI("x");
  set x(core::int #t2) → void {
    this.{test::A::_#A#x#isSet} = true;
    this.{test::A::_#A#x} = #t2;
  }
}
class _B extends core::Object implements test::A {
  field core::int x = 3;
  synthetic constructor •() → test::_B
    : super core::Object::•()
    ;
}
