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 dynamic #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";
  }
}
