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

static method staticTypeOf<T extends core::Object? = dynamic>(self::staticTypeOf::T% x) → dynamic
  return self::staticTypeOf::T%;
static method main() → dynamic {
  hoisted has-declared-initializer core::int v;
  {
    final synthesized core::Map<core::String, core::int> #0#0 = <core::String, core::int>{"key": 42};
    synthesized core::int? #0#3;
    synthesized core::bool #0#3#isSet = false;
    if(!((!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t2 = v = let core::int? #t3 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t3 == null ?{core::int} #t3 as{Unchecked} core::int : #t3{core::int} in true)))
      throw{for-error-handling} new core::StateError::•("Pattern matching error");
  }
  core::print(self::staticTypeOf<core::int>(v));
}

constants  {
  #C1 = "key"
}

Extra constant evaluation status:
Evaluated: LogicalExpression @ org-dartlang-testcase:///issue51480.dart:8:13 -> BoolConstant(false)
Extra constant evaluation: evaluated: 38, effectively constant: 1
