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

class _X<T extends core::Object = dynamic> extends core::Object {
  static field dynamic _redirecting# = <dynamic>[self::_X::•];
  static factory •<T extends core::Object = dynamic>() → self::_X<self::_X::•::T>
    let<BottomType> #redirecting_factory = self::_Y::• in let self::_X::•::T #typeArg0 = null in invalid-expression;
}
class _Y<T extends core::Object = dynamic> extends core::Object implements self::_X<self::_Y::T> {
  const constructor •() → void
    : super core::Object::•()
    ;
}
class A<T extends core::Object = dynamic> extends core::Object {
  generic-covariant-impl field self::_X<self::A::T> x;
  constructor •(self::_X<self::A::T> x) → void
    : self::A::x = x, super core::Object::•()
    ;
}
class B<T extends core::Object = dynamic> extends self::A<self::B::T> {
  constructor •() → void
    : super self::A::•(const self::_Y::•<core::Null>())
    ;
}
static method main() → dynamic {
  dynamic x = new self::B::•<dynamic>().{self::A::x};
  if(!(x is self::_Y<core::Null>)) {
    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}}, but `_Y<Null>` expected";
  }
}
