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

class A extends core::Object {
  field self::B b = null;
  synthetic constructor •() → void
    : super core::Object::•()
    ;
}
class B extends core::Object {
  field self::C c = null;
  synthetic constructor •() → void
    : super core::Object::•()
    ;
}
class C extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
}
class D extends self::C {
  synthetic constructor •() → void
    : 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 {}
