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

class A extends core::Object {
  field core::int x = 42;
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
}
class B extends core::Object {
  field self::A a = new self::A::•();
  synthetic constructor •() → self::B
    : super core::Object::•()
    ;
}
class C extends core::Object {
  field self::B b = new self::B::•();
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
}
class D extends core::Object {
  field self::C c = new self::C::•();
  synthetic constructor •() → self::D
    : super core::Object::•()
    ;
}
static method main() → void {
  self::D d1 = new self::D::•();
  core::print(d1.{self::D::c}{self::C}.{self::C::b}{self::B}.{self::B::a}{self::A}.{self::A::x}{core::int});
  self::D d2 = new self::D::•();
  core::print(d2.{self::D::c}{self::C}.{self::C::b}{self::B}.{self::B::a}{self::A}.{self::A::x}{core::int});
}
