// @dart = 2.9
class C1 {}

class C2 {}

class C3 {}

class A<T> {
  A.internal();
  factory A.a() = B<T>.a;
  factory A.b() = B<C1>.a;
  factory A.c() = Missing;
}

class B<S> extends A<S> {
  B.internal() : super.internal();
  factory B.a() = C<S>;
  factory B.b() = C<C2>;
}

class C<U> extends B<U> {
  C() : super.internal();
}

main() {}
