// @dart = 2.9
class C<T> {
  C(this.field1)
      : field2 = (() => field1),
        field3 = ((T t) {}),
        field4 = ((T t) => t),
        field5 = (() => () => field1),
        field6 = ((T Function() f) {}),
        field7 = ((T Function() f) => field1),
        field8 = ((void Function(T) f) {}),
        field9 = ((void Function(T) f) => field1),
        field10 = ((T Function(T) f) {}),
        field11 = ((T Function(T) f) => field1),
        field12 = <S extends T>() => null,
        field13 = <S extends T>(S s) {},
        field14 = <S extends T>(S s) => s,
        field15 = ((S Function<S extends T>() f) {});
  S Function<S extends T>() field12;
  S Function<S extends T>() get getter12 => field12;
  S Function<S extends T>(S) field14;
  S Function<S extends T>(S) get getter14 => field14;
  T Function() Function() field5;
  T Function() Function() get getter5 => field5;
  T Function() field2;
  T Function() get getter2 => field2;
  T Function(T) field4;
  T Function(T) get getter4 => field4;
  T Function(T Function()) field7;
  T Function(T Function()) get getter7 => field7;
  T Function(T Function(T)) field11;
  T Function(T Function(T)) get getter11 => field11;
  T Function(void Function(T)) field9;
  T Function(void Function(T)) get getter9 => field9;
  T field1;
  T get getter1 => field1;
  void Function(S Function<S extends T>()) field15;
  void Function(S Function<S extends T>()) get getter15 => field15;
  void Function(T) field3;
  void Function(T) get getter3 => field3;
  void Function(T Function()) field6;
  void Function(T Function()) get getter6 => field6;
  void Function(T Function(T)) field10;
  void Function(T Function(T)) get getter10 => field10;
  void Function(void Function(T)) field8;
  void Function(void Function(T)) get getter8 => field8;
  void Function<S extends T>(S) field13;
  void Function<S extends T>(S) get getter13 => field13;
  void method1(T value) {}
  void method10(void Function(T Function(T)) value) {}
  void method11(T Function(T Function(T)) value) {}
  void method12(S Function<S extends T>() value) {}
  void method13(void Function<S extends T>(S) value) {}
  void method14(S Function<S extends T>(S) value) {}
  void method15(void Function(S Function<S extends T>()) value) {}
  void method2(T Function() value) {}
  void method3(void Function(T) value) {}
  void method4(T Function(T) value) {}
  void method5(T Function() Function() value) {}
  void method6(void Function(T Function()) value) {}
  void method7(T Function(T Function()) value) {}
  void method8(void Function(void Function(T)) value) {}
  void method9(T Function(void Function(T)) value) {}
  void set setter1(T value) {}
  void set setter10(void Function(T Function(T)) value) {}
  void set setter11(T Function(T Function(T)) value) {}
  void set setter12(S Function<S extends T>() value) {}
  void set setter13(void Function<S extends T>(S) value) {}
  void set setter14(S Function<S extends T>(S) value) {}
  void set setter15(void Function(S Function<S extends T>()) value) {}
  void set setter2(T Function() value) {}
  void set setter3(void Function(T) value) {}
  void set setter4(T Function(T) value) {}
  void set setter5(T Function() Function() value) {}
  void set setter6(void Function(T Function()) value) {}
  void set setter7(T Function(T Function()) value) {}
  void set setter8(void Function(void Function(T)) value) {}
  void set setter9(T Function(void Function(T)) value) {}
}

main() {}
