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

class A extends core::Object {
  field self::B* b = null;
  synthetic constructor •() → self::A*
    : super core::Object::•()
    ;
}
class B extends core::Object {
  field self::C* c = null;
  synthetic constructor •() → self::B*
    : super core::Object::•()
    ;
}
class C extends core::Object {
  synthetic constructor •() → self::C*
    : super core::Object::•()
    ;
}
class D extends self::C {
  synthetic constructor •() → self::D*
    : super self::C::•()
    ;
}
static field self::A* a = new self::A::•();
static field self::C* x = self::a.{self::A::b}.{self::B::c};
static field self::C* y = let final self::B* #t1 = self::a.{self::A::b} in let final self::C* #t2 = #t1.{self::B::c} in #t2.{core::Object::==}(null) ?{self::C*} #t1.{self::B::c} = new self::D::•() : #t2;
static method main() → dynamic {}
