const Object? nullValue = null;

class Class<T> {
  operator ==(covariant Class<T> other) => true;
  method(o) {}
}

test<T1 extends Function, T2 extends int Function(int)>(
    Object o,
    Object nonNullableObject,
    Object? nullableObject,
    Class<String> nonNullableClass,
    Class<String>? nullableClass,
    dynamic dyn,
    Never never,
    Never? nullableNever,
    Null nullTypedValue,
    Function nonNullableFunction,
    Function? nullableFunction,
    int Function(int) nonNullableFunctionType,
    int Function(int)? nullableFunctionType,
    T1 nonNullableTypeVariable1,
    T1? nullableTypeVariable1,
    T2 nonNullableTypeVariable2,
    T2? nullableTypeVariable2) {}
nullEqualsIndexGet(Map<int, String> map) {}
main() {}
