library test;

int getInt() => 0;
num getNum() => 0;
double getDouble() => 0.0;

abstract class Test<T, U> {
  T operator [](String s);
  void operator []=(String s, U v);
}

abstract class Test2<T, U> {
  T? operator [](String s);
  void operator []=(String s, U? v);
}

void test1(Test<int, int> t, Test2<int, int> t2) {}
void test2(Test<int, num> t, Test2<int, num> t2) {}
void test3(Test<int, double> t, Test2<int, double> t2) {}
void test4(Test<num, int> t, Test2<num, int> t2) {}
void test5(Test<num, num> t, Test2<num, num> t2) {}
void test6(Test<num, double> t, Test2<num, double> t2) {}
void test7(Test<double, int> t, Test2<double, int> t2) {}
void test8(Test<double, num> t, Test2<double, num> t2) {}
void test9(Test<double, double> t, Test2<double, double> t2) {}
main() {}
