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>() => throw '',
        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() {}
