abstract class F<T> {
  void foo7<Q extends T>(Q a, covariant num b, T c);
  void foo8<Q extends T>(Q a, covariant num b, T c);
}

class A<T> {}

class B extends A<String> {}

class C<T1, T2, T3> extends B {}

class D<P, Q> extends C<int, Q, P> {
  D(tt) : foo = tt;
  Map<P, Q> foo;
  Map<P, Q> foo4(w) {}
  foo2(y) {}
  foo3<T1, T2>(z) {}
}

class E<P extends String> {
  factory E() => throw '';
  void foo6<T extends P, U extends List<T>>(Map<T, U> map) {}
}

class G<T> {
  void foo7<Q extends T>(Q a, int b, T c) {}
}

class H<T> extends G<T> implements F<T> {
  void foo8<Q extends T>(Q a, int b, T c) {}
}

foo1(x) {}
late List<Iterable> globalVar;
main() {}
void foo5(x) {}
