library test;

abstract class I<T> {
  void f1(T x);
  void f2(T x);
}

class C<U> implements I<int> {
  void f1(int x) {}
  void f2(int x, [U? y]) {}
}

class D<U> extends C<U> {
  void f1(int x) {}
  void f2(int x, [U? y]) {}
}

void g1(C<num> c) {}
void g2(I<num> i) {}
void g3(C<num> c) {}
void g4(D<num> d) {}
void g5(D<num> d) {}
void main() {}
void test() {}
