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 = #C9;
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){(core::Object?) → core::Object?};
}
static method fn2() → core::int? {
  return #C11.{core::Map::[]}("key"){(core::Object?) → core::int?};
}
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 = <core::String, core::int>{#C4:#C2, #C5:#C6, #C7:#C8)
  #C10 = "key"
  #C11 = <core::String, core::int>{#C10:#C2)
}
