library test /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

class A extends core::Object {
  field self::B b = throw "";
  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}.{self::B::c}{self::C?};
static field self::C y = let final self::B #t1 = self::a.{self::A::b}{self::B} in let final self::C? #t2 = #t1.{self::B::c}{self::C?} in #t2 == null ?{self::C} #t1.{self::B::c} = new self::D::•() : #t2{self::C};
static method main() → dynamic {}
