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 x#param) → void {
    this.{test::A::_#A#x#isSet} = true;
    this.{test::A::_#A#x} = x#param;
  }
}
class _B extends core::Object implements test::A {
  field core::int x = 3;
  synthetic constructor •() → test::_B
    : super core::Object::•()
    ;
}
