class Class1 {
  Class1(this.field);
  int field;
  int method(double o) => 0;
  static int staticField = 42;
  static int staticMethod(double o) => 0;
}

class Class2<T> {
  Class2(this.field);
  T field;
  int call() => 42;
}

const String string = 'foo';
const dynamic dynamicString = 'foo';
const int dynamicStringLength = dynamicString.length;
const int stringLength = string.length;
int topLevelField = 42;
int topLevelMethod(double o) => 0;
main() {}
test<T1 extends Function, T2 extends int Function()>(
    Class1 nonNullableClass1,
    Class1? nullableClass1,
    dynamic dyn,
    Never never,
    Class2<String> nonNullableClass2,
    Class2<String>? nullableClass2,
    Function nonNullableFunction,
    Function? nullableFunction,
    int Function() nonNullableFunctionType,
    int Function()? nullableFunctionType,
    T1 nonNullableTypeVariable1,
    T1? nullableTypeVariable1,
    T2 nonNullableTypeVariable2,
    T2? nullableTypeVariable2) {}
