library;
import self as self;
import "dart:test" as test;

import "dart:test";

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

library;
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{for-error-handling} 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::•()
    ;
}
