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

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