// @dart = 2.9
library redirecting_factory_constructors.typeargs_test;

class A {
  A();
  factory A.redir() = B<Y>;
}

class B<T extends X> extends A {
  B();
}

class X {}

class Y extends X {}

main() {}
