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

class Uninitialized extends core::Object {
  field core::int? x = null;
  synthetic constructor •() → self::Uninitialized
    : super core::Object::•()
    ;
}
class PartiallyInitialized extends core::Object {
  field core::int? x;
  constructor •(core::int? x) → self::PartiallyInitialized
    : self::PartiallyInitialized::x = x, super core::Object::•()
    ;
  constructor noInitializer() → self::PartiallyInitialized
    : self::PartiallyInitialized::x = null, super core::Object::•()
    ;
}
class Initialized extends core::Object {
  field core::int? x;
  constructor •(core::int? x) → self::Initialized
    : self::Initialized::x = x, super core::Object::•()
    ;
}
class Forwarding extends core::Object {
  field core::int? x;
  constructor initialize(core::int? x) → self::Forwarding
    : self::Forwarding::x = x, super core::Object::•()
    ;
  constructor •(core::int? arg) → self::Forwarding
    : this self::Forwarding::initialize(arg)
    ;
}
static field core::int? uninitializedTopLevel;
static field core::int? initializedTopLevel = 4;
static method main() → dynamic {}
