// @dart = 2.9
library test;

class B<T, U extends F<T>> {
  B<T, F<T>> operator +(other) => null;
}

class C {
  B<num, F<num>> operator [](int i) => null;
  B<num, F<num>> x;
  static B<num, F<num>> y;
  void operator []=(int i, B<num, F<num>> v) {}
}

typedef void F<T>(T x);
void main() {}
void test1(B<num, F<num>> b) {}
void test2(C c) {}
void test3(C c) {}
void test4(C c) {}
