Type? _capturedTypeArgument;
X captureTypeArgument<X>() {}
class A<X extends A<X>> {}
typedef C<X extends A<X>> = A<X>;
void topLevel1<X extends A<X>>(A<X> Function() g) => g();
void topLevel2<X extends C<X>>(C<X> Function() g) => g();
class Class {
  void instance1<X extends A<X>>(A<X> Function() g) => g();
  void instance2<X extends C<X>>(C<X> Function() g) => g();
  void test() {}
}
class Subclass extends Class {
  void test() {}
}
main() {}
