library test;
import self as self;
import "dart:core" as core;

static method foo([core::Map<core::int, core::String> m1 = const <core::int, core::String>{1: "hello"}, core::Map<core::int, core::String> m2 = const <core::int, core::String>{"hello": "world"}]) → void {}
static method main() → void {
  {
    core::Map<core::int, core::String> l0 = <core::int, core::String>{};
    core::Map<core::int, core::String> l1 = <core::int, core::String>{3: "hello"};
    core::Map<core::int, core::String> l2 = <core::int, core::String>{"hello": "hello"};
    core::Map<core::int, core::String> l3 = <core::int, core::String>{3: 3};
    core::Map<core::int, core::String> l4 = <core::int, core::String>{3: "hello", "hello": 3};
  }
  {
    core::Map<dynamic, dynamic> l0 = <dynamic, dynamic>{};
    core::Map<dynamic, dynamic> l1 = <dynamic, dynamic>{3: "hello"};
    core::Map<dynamic, dynamic> l2 = <dynamic, dynamic>{"hello": "hello"};
    core::Map<dynamic, dynamic> l3 = <dynamic, dynamic>{3: 3};
    core::Map<dynamic, dynamic> l4 = <dynamic, dynamic>{3: "hello", "hello": 3};
  }
  {
    core::Map<dynamic, core::String> l0 = <dynamic, core::String>{};
    core::Map<dynamic, core::String> l1 = <dynamic, core::String>{3: "hello"};
    core::Map<dynamic, core::String> l2 = <dynamic, core::String>{"hello": "hello"};
    core::Map<dynamic, core::String> l3 = <dynamic, core::String>{3: 3};
    core::Map<dynamic, core::String> l4 = <dynamic, core::String>{3: "hello", "hello": 3};
  }
  {
    core::Map<core::int, dynamic> l0 = <core::int, dynamic>{};
    core::Map<core::int, dynamic> l1 = <core::int, dynamic>{3: "hello"};
    core::Map<core::int, dynamic> l2 = <core::int, dynamic>{"hello": "hello"};
    core::Map<core::int, dynamic> l3 = <core::int, dynamic>{3: 3};
    core::Map<core::int, dynamic> l4 = <core::int, dynamic>{3: "hello", "hello": 3};
  }
  {
    core::Map<core::int, core::String> l0 = <core::num, dynamic>{};
    core::Map<core::int, core::String> l1 = <core::num, dynamic>{3: "hello"};
    core::Map<core::int, core::String> l3 = <core::num, dynamic>{3: 3};
  }
  {
    const core::Map<core::int, core::String> l0 = const <core::int, core::String>{};
    const core::Map<core::int, core::String> l1 = const <core::int, core::String>{3: "hello"};
    const core::Map<core::int, core::String> l2 = const <core::int, core::String>{"hello": "hello"};
    const core::Map<core::int, core::String> l3 = const <core::int, core::String>{3: 3};
    const core::Map<core::int, core::String> l4 = const <core::int, core::String>{3: "hello", "hello": 3};
  }
}
