class Foo<T> {}

class C<T extends Object> {
  void something(T? Function() read) {}
}

extension CheckType<T> on T {
  void expect<S extends Exactly<T>>() {}
}

extension CheckTypeArgumentOfFoo<T> on Foo<T> {
  void expect<S extends Exactly<T>>() {}
}

typedef Exactly<T> = T Function(T);

void main() {}
