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

static method foo(dynamic x) → dynamic {
  #L1:
  {
    final synthesized dynamic #0#0 = x;
    synthesized dynamic #0#6;
    synthesized core::bool #0#6#isSet = false;
    synthesized dynamic #0#10;
    synthesized core::bool #0#10#isSet = false;
    dynamic #t1;
    {
      lowered hoisted core::int a#case#0;
      lowered hoisted core::int a#case#1;
      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final dynamic #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final dynamic #t3 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final dynamic #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final dynamic #t5 = #t1 = a#case#0 in true) || #0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && ((#0#10#isSet ?{dynamic} #0#10{dynamic} : let final dynamic #t6 = #0#10#isSet = true in #0#10 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final dynamic #t7 = a#case#1 = (#0#10#isSet ?{dynamic} #0#10{dynamic} : let final dynamic #t8 = #0#10#isSet = true in #0#10 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true)) && (let final dynamic #t9 = #t1 = a#case#1 in true)) {
        core::int a = #t1{core::int};
        {
          return a;
        }
      }
    }
    {
      {
        {
          return 0;
        }
      }
    }
  }
}

constants  {
  #C1 = 1
  #C2 = "a"
}
