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

class A extends core::Object {
  field self::B b;
  default constructor •() → void
    ;
}
class B extends core::Object {
  default constructor •() → void
    ;
  get c() → self::C
    ;
  set c(self::C value) → void
    ;
}
class C extends core::Object {
  default constructor •() → void
    ;
}
class D extends self::C {
  default constructor •() → void
    ;
}
static field dynamic a;
static field dynamic x;
static field dynamic y;
static method main() → dynamic
  ;
