class C<X> {
  C.foo() {}
  factory C() => new C.foo();
  factory C.bar() = C;
}

class D<X> {
  D();
  factory D.bar() = D;
  factory D.foo() => new D();
}

main() {}
test() {}
typedef A<X extends G<C<X>>> = C<X>;
typedef B<X extends G<D<X>>> = D<X>;
typedef G<X> = X Function(X);
