class Class1 {
  double method(int o) => 0.5;
}

class Class2<T> {
  T field;
  Class2(this.field, this.nonNullableFunctionField,
      this.nonNullableFunctionTypedField);
  T call() => field;
  T method(int o) => field;
  Function nonNullableFunctionField;
  Function get nonNullableFunctionGetter => nonNullableFunctionTypedField;
  Function? nullableFunctionField;
  Function? get nullableFunctionGetter => nonNullableFunctionTypedField;
  void Function() nonNullableFunctionTypedField;
  void Function() get nonNullableFunctionTypedGetter =>
      nonNullableFunctionTypedField;
  void Function()? nullableFunctionTypedField;
  void Function()? get nullableFunctionTypedGetter =>
      nonNullableFunctionTypedField;
}

const int i = 4;
const int j = 24;
const int k = i * j;
test<T1 extends Function, T2 extends int Function(int), T3>(
    Class1 nonNullableClass1,
    Class1? nullableClass1,
    dynamic dyn,
    Never never,
    Class2<String> nonNullableClass2,
    Class2<String>? nullableClass2,
    Function nonNullableFunction,
    Function? nullableFunction,
    int Function(int) nonNullableFunctionType,
    int Function(int)? nullableFunctionType,
    T Function<T>(T) genericFunctionType,
    T1 nonNullableTypeVariable1,
    T1? nullableTypeVariable1,
    T2 nonNullableTypeVariable2,
    T2? nullableTypeVariable2,
    T3 undeterminedTypeVariable) {}
main() {}
