bool inStrongMode = <int?>[] is! List<int>;
int f({required int i}) {}
int g({int i = 1}) {}
typedef int fType({required int i});
typedef int gType({int i});
typedef int bigType(
    {required int i1,
    required int i2,
    required int i3,
    required int i4,
    required int i5,
    required int i6,
    required int i7,
    required int i8,
    required int i9,
    required int i10,
    required int i11,
    required int i12,
    required int i13,
    required int i14,
    required int i15,
    required int i16,
    required int i17,
    required int i18,
    required int i19,
    required int i20,
    required int i21,
    required int i22,
    required int i23,
    required int i24,
    required int i25,
    required int i26,
    required int i27,
    required int i28,
    required int i29,
    required int i30,
    required int i31,
    required int i32,
    required int i33,
    required int i34,
    required int i35,
    required int i36,
    required int i37,
    required int i38,
    required int i39,
    required int i40,
    required int i41,
    required int i42,
    required int i43,
    required int i44,
    required int i45,
    required int i46,
    required int i47,
    required int i48,
    required int i49,
    required int i50,
    required int i51,
    required int i52,
    required int i53,
    required int i54,
    required int i55,
    required int i56,
    required int i57,
    required int i58,
    required int i59,
    required int i60,
    required int i61,
    required int i62,
    required int i63,
    required int i64,
    required int i65,
    required int i66,
    required int i67,
    required int i68,
    required int i69,
    required int i70});

class A {}

class A1 {}

class A2 {}

class B implements A, A1, A2 {}

class C implements B {}

class D implements C {}

typedef B func(Object o);
typedef B t1(int i, B b, Map<int, num> m, var x,
    {required var ox,
    required B ob,
    required List<num> ol,
    required bool obool});
B f1(int i, B b, Map<int, num> m, var x,
        {required extraParam,
        required bool obool,
        required var ox,
        required D ob,
        required List<num>? ol}) =>
    new B();
D f2(int i, D b, Map<int, int> m, func x,
        {required func ox,
        required D ob,
        required List<int> ol,
        required bool obool}) =>
    new D();
C f3(num i, A b, Map<Object, Object> m, var x,
        {required var ox,
        required extraParam,
        required A2 ob,
        required List ol,
        required Object obool}) =>
    new C();
C f4(num i, A b, Map<Object, Object> m, var x,
        {required var ox,
        required A2 ob,
        required List ol,
        required bool obool,
        required A xx,
        required B yy}) =>
    new C();
C f5(int i, A b, Map<Object, Object> m, var x,
        {required ox, required B ob, required List ol, required obool}) =>
    new C();
const f_is_fType = f is fType;
const f_is_gType = f is gType;
const g_is_fType = g is fType;
const g_is_gType = g is gType;
const f_is_bigType = f is bigType;
const f1_is_t1 = f1 is t1;
const f2_is_t1 = f2 is t1;
const f3_is_t1 = f3 is t1;
const f4_is_t1 = f4 is t1;
const f5_is_t1 = f5 is t1;
main() {}
expect(expected, actual) {}
