library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;

import "package:expect/expect.dart";

static const field core::Object? var1 = #C1;
static const field core::Object? var2 = #C2;
static const field core::Object? var3 = #C3;
static const field core::Map<core::String, core::int> map = #C10;
static const field core::Object? var4 = #C2;
static const field core::Object? var5 = #C6;
static const field core::Object? var6 = #C8;
static const field core::int? var7 = #C2;
static method fn(core::Map<core::Object, core::Object> map, core::Object key) → core::Object? {
  return map.{core::Map::[]}(key);
}
static method fn2() → core::int? {
  return (#C13).{core::Map::[]}("key");
}
static method main() → void {
  exp::Expect::equals(#C1, "val");
  exp::Expect::equals(#C2, 2);
  exp::Expect::equals(#C3, null);
  exp::Expect::equals(#C2, 2);
  exp::Expect::equals(#C6, 3);
  exp::Expect::equals(#C8, 4);
  exp::Expect::equals(#C2, 2);
}

constants  {
  #C1 = "val"
  #C2 = 2
  #C3 = null
  #C4 = "key1"
  #C5 = "key2"
  #C6 = 3
  #C7 = "key3"
  #C8 = 4
  #C9 = <dynamic>[#C4, #C2, #C5, #C6, #C7, #C8]
  #C10 = core::_ImmutableMap<core::String, core::int> {_kvPairs:#C9}
  #C11 = "key"
  #C12 = <dynamic>[#C11, #C2]
  #C13 = core::_ImmutableMap<core::String, core::int> {_kvPairs:#C12}
}
