extension Foo<U> on List {
  static List<U> Function() foo8Prime() {}
  static List<U> foo1Prime() {}
  static U Function() foo8() {}
  static U foo1() {}
  static late List<U> Function(List<U>) foo15Prime;
  static late List<U> foo14Prime;
  static late U Function(U) foo15;
  static late U foo14;
  static void Function(List<U>) foo9Prime() {}
  static void Function(U) foo9() {}
  static void foo10(U Function()) {}
  static void foo10Prime(List<U> Function()) {}
  static void foo11(void Function(U)) {}
  static void foo12(void Function(U) b) {}
  static void foo12Prime(void Function(List<U>) b) {}
  static void foo13(void Function(U b)) {}
  static void foo13Prime(void Function(List<U> b)) {}
  static void foo2(U x) {}
  static void foo2Prime(List<U> x) {}
  static void foo3() {}
}

main() {}
