// @dart = 2.9
abstract class A<T> {
  foo(T x);
}

abstract class B<T> implements A<T> {}

class C {
  foo(num x) {}
}

class D<T extends num> extends C with B<T> {}

class E<T extends num> = C with B<T>;
main() {}
