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

[222]class E extends core::_Enum /*isEnum*/  {
[226]  enum-element static const field self::E a = [226] [226] #C3;
[229]  enum-element static const field self::E b = [229] [229] #C6;
[232]  enum-element static const field self::E c = [232] [232] #C9;
[222]  static const field core::List<self::E> values = [-1] [-1] #C10;
[222]  const synthetic constructor •([222] core::int #index, [222] core::String #name) → self::E
    : [222] super core::_Enum::• [222]([-1] #index, [-1] #name)
[-1]    ;
[222]  method _enumToString() → core::String
[-1]    return [-1] [-1] "E.${[-1] [-1] [-1] [-1] this.{core::_Enum::_name}{core::String}}";
}
[243]class PrimitiveEquals extends core::Object /*hasConstConstructor*/  {
[273]  final field core::int field;
[289]  const constructor •([310] core::int field) → self::PrimitiveEquals
    : [310] self::PrimitiveEquals::field = [-1] [-1] field, [289] super core::Object::• [289]()
[-1]    ;
}
[327]class NonPrimitiveEquals extends core::Object /*hasConstConstructor*/  {
[360]  final field core::int field;
[376]  const constructor •([400] core::int field) → self::NonPrimitiveEquals
    : [400] self::NonPrimitiveEquals::field = [-1] [-1] field, [376] super core::Object::• [376]()
[-1]    ;
[419]  get hashCode() → core::int
[431]    return [437] [437] [431] [431] [431] [431] this.{self::NonPrimitiveEquals::field}{core::int}.{core::num::hashCode}{core::int};
[464]  operator ==([474] core::Object other) → core::bool {
[487]    if([491] [491] core::identical [500]([501] this, [507] other))
[515]      return [522] [522] true;
[532]    return [567] [567] [545] [545] [539] [539] other is self::NonPrimitiveEquals && [576] [576] [570] [570] [570] [570] this.{self::NonPrimitiveEquals::field}{core::int} =={core::num::==}{(core::Object) → core::bool} [585] [585] [579] [579] other{self::NonPrimitiveEquals}.{self::NonPrimitiveEquals::field}{core::int};
  }
}
[599]static method switchStatement([615] dynamic o) → dynamic {
[622]  #L1:
[622]  {
[630]    [630] final synthesized dynamic #0#0 = [630] [630] o;
[-1]    [-1] synthesized core::int #0#2;
[-1]    [-1] synthesized core::bool #0#2#isSet = [644] [644] false;
[-1]    [-1] synthesized dynamic #0#13;
[-1]    [-1] synthesized core::bool #0#13#isSet = [723] [723] false;
[-1]    [-1] dynamic #t1;
[639]    {
[649]      [649] lowered hoisted dynamic a#case#0;
[681]      [681] lowered hoisted dynamic a#case#1;
[639]      if([622] [622] [649] [649] [-1] [-1] [644] [644] [644] [644] [644] [644] [-1] [-1] #0#0 is core::List<dynamic> && [644] [644] [644]([644] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [644] [644] let [644] final dynamic #t2 = [644] [644] #0#2#isSet = [644] [644] true in [644] [644] #0#2 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [649]([649] let [649] final dynamic #t3 = [649] [649] a#case#0 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[644]([644] 0){(core::int) → dynamic} in [-1] [-1] true) && [659] [659] [659] [659] [657] [657] a#case#0{dynamic}.> [659]([661] 5) as{TypeError} core::bool && [622]([622] let [622] final dynamic #t4 = [622] [622] #t1 = [649] [649] a#case#0 in [649] [649] true) || [681] [681] [-1] [-1] [673] [673] [673] [673] [673] [673] [-1] [-1] #0#0 is core::List<dynamic> && [673] [673] [644]([644] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [644] [644] let [644] final dynamic #t5 = [644] [644] #0#2#isSet = [644] [644] true in [644] [644] #0#2 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [681]([681] let [681] final dynamic #t6 = [681] [681] a#case#1 = [673] [673] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[673]([673] 1){(core::int) → dynamic} in [-1] [-1] true) && [691] [691] [691] [691] [689] [689] a#case#1{dynamic}.< [691]([693] 5) as{TypeError} core::bool && [622]([622] let [622] final dynamic #t7 = [622] [622] #t1 = [681] [681] a#case#1 in [681] [681] true)) {
[649]        [649] dynamic a = [-1] [-1] #t1{dynamic};
[639]        {
[702]          [702] [702] core::print [707]([708] a);
[-1]          break #L1;
        }
      }
    }
[716]    {
[729]      [729] hoisted dynamic a;
[716]      if([721] [721] [723] [723] [721] [721] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [723]([723] [723] [723]![723]([723] [723]([723] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [723] [723] let [723] final dynamic #t8 = [723] [723] #0#13#isSet = [723] [723] true in [723] [723] #0#13 = [723] [723] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[723]([-1] #C4){(core::Object?) → dynamic}) == null) || [723] [723] [723] [723] [723] [723] null is dynamic && [723] [723] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[723]([-1] #C4){(core::Object?) → core::bool}) && [729]([729] let [729] final dynamic #t9 = [729] [729] a = [723] [723] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [723] [723] let [723] final dynamic #t10 = [723] [723] #0#13#isSet = [723] [723] true in [723] [723] #0#13 = [723] [723] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[723]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
[716]        {
[739]          [739] [739] core::print [744]([745] a);
        }
      }
    }
  }
}
[756]static method switchStatementWithLabel([781] dynamic o) → dynamic {
[788]  #L2:
[788]  {
[796]    [796] final synthesized dynamic #0#0 = [796] [796] o;
[-1]    [-1] synthesized core::int #0#2;
[-1]    [-1] synthesized core::bool #0#2#isSet = [810] [810] false;
[-1]    [-1] synthesized dynamic #0#13;
[-1]    [-1] synthesized core::bool #0#13#isSet = [889] [889] false;
[-1]    [-1] dynamic #t11;
[805]    {
[815]      [815] lowered hoisted dynamic a#case#0;
[847]      [847] lowered hoisted dynamic a#case#1;
[805]      if([788] [788] [815] [815] [-1] [-1] [810] [810] [810] [810] [810] [810] [-1] [-1] #0#0 is core::List<dynamic> && [810] [810] [810]([810] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [810] [810] let [810] final dynamic #t12 = [810] [810] #0#2#isSet = [810] [810] true in [810] [810] #0#2 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [815]([815] let [815] final dynamic #t13 = [815] [815] a#case#0 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[810]([810] 0){(core::int) → dynamic} in [-1] [-1] true) && [825] [825] [825] [825] [823] [823] a#case#0{dynamic}.> [825]([827] 5) as{TypeError} core::bool && [788]([788] let [788] final dynamic #t14 = [788] [788] #t11 = [815] [815] a#case#0 in [815] [815] true) || [847] [847] [-1] [-1] [839] [839] [839] [839] [839] [839] [-1] [-1] #0#0 is core::List<dynamic> && [839] [839] [810]([810] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [810] [810] let [810] final dynamic #t15 = [810] [810] #0#2#isSet = [810] [810] true in [810] [810] #0#2 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [847]([847] let [847] final dynamic #t16 = [847] [847] a#case#1 = [839] [839] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[839]([839] 1){(core::int) → dynamic} in [-1] [-1] true) && [857] [857] [857] [857] [855] [855] a#case#1{dynamic}.< [857]([859] 5) as{TypeError} core::bool && [788]([788] let [788] final dynamic #t17 = [788] [788] #t11 = [847] [847] a#case#1 in [847] [847] true)) {
[815]        [815] dynamic a = [-1] [-1] #t11{dynamic};
[805]        {
[868]          [868] [868] core::print [873]([874] a);
[-1]          break #L2;
        }
      }
    }
[882]    {
[895]      [895] hoisted dynamic a;
[882]      if([887] [887] [889] [889] [887] [887] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [889]([889] [889] [889]![889]([889] [889]([889] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [889] [889] let [889] final dynamic #t18 = [889] [889] #0#13#isSet = [889] [889] true in [889] [889] #0#13 = [889] [889] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[889]([-1] #C4){(core::Object?) → dynamic}) == null) || [889] [889] [889] [889] [889] [889] null is dynamic && [889] [889] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[889]([-1] #C4){(core::Object?) → core::bool}) && [895]([895] let [895] final dynamic #t19 = [895] [895] a = [889] [889] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [889] [889] let [889] final dynamic #t20 = [889] [889] #0#13#isSet = [889] [889] true in [889] [889] #0#13 = [889] [889] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[889]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
[882]        {
[905]          [905] [905] core::print [910]([911] a);
[-1]          break #L2;
        }
      }
    }
[919]    {
[919]      if([935] [935] [-1] [-1] #C4 =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[919]        {
[944]          [944] [944] core::print [949]([950] 1);
        }
      }
    }
  }
}
[961]static method switchStatementWithContinue([989] dynamic o) → dynamic {
[996]  #L3:
[996]  {
[996]    [996] core::int #t21 = [996] [996] [996] [996] 1.{core::int::unary-}[996](){() → core::int};
[1004]    [1004] final synthesized dynamic #0#0 = [1004] [1004] o;
[-1]    [-1] synthesized core::int #0#2;
[-1]    [-1] synthesized core::bool #0#2#isSet = [1018] [1018] false;
[-1]    [-1] synthesized dynamic #0#13;
[-1]    [-1] synthesized core::bool #0#13#isSet = [1097] [1097] false;
[-1]    [-1] dynamic #t22;
[996]    #L4:
[996]    {
[1013]      {
[1023]        [1023] lowered hoisted dynamic a#case#0;
[1055]        [1055] lowered hoisted dynamic a#case#1;
[1013]        if([996] [996] [1023] [1023] [-1] [-1] [1018] [1018] [1018] [1018] [1018] [1018] [-1] [-1] #0#0 is core::List<dynamic> && [1018] [1018] [1018]([1018] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1018] [1018] let [1018] final dynamic #t23 = [1018] [1018] #0#2#isSet = [1018] [1018] true in [1018] [1018] #0#2 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [1023]([1023] let [1023] final dynamic #t24 = [1023] [1023] a#case#0 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1018]([1018] 0){(core::int) → dynamic} in [-1] [-1] true) && [1033] [1033] [1033] [1033] [1031] [1031] a#case#0{dynamic}.> [1033]([1035] 5) as{TypeError} core::bool && [996]([996] let [996] final dynamic #t25 = [996] [996] #t22 = [1023] [1023] a#case#0 in [1023] [1023] true) || [1055] [1055] [-1] [-1] [1047] [1047] [1047] [1047] [1047] [1047] [-1] [-1] #0#0 is core::List<dynamic> && [1047] [1047] [1018]([1018] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1018] [1018] let [1018] final dynamic #t26 = [1018] [1018] #0#2#isSet = [1018] [1018] true in [1018] [1018] #0#2 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [1055]([1055] let [1055] final dynamic #t27 = [1055] [1055] a#case#1 = [1047] [1047] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1047]([1047] 1){(core::int) → dynamic} in [-1] [-1] true) && [1065] [1065] [1065] [1065] [1063] [1063] a#case#1{dynamic}.< [1065]([1067] 5) as{TypeError} core::bool && [996]([996] let [996] final dynamic #t28 = [996] [996] #t22 = [1055] [1055] a#case#1 in [1055] [1055] true)) {
[1023]          [1023] dynamic a = [-1] [-1] #t22{dynamic};
[1013]          {
[1076]            [1076] [1076] core::print [1081]([1082] a);
[-1]            break #L3;
          }
        }
      }
[1090]      {
[1103]        [1103] hoisted dynamic a;
[1090]        if([1095] [1095] [1097] [1097] [1095] [1095] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [1097]([1097] [1097] [1097]![1097]([1097] [1097]([1097] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [1097] [1097] let [1097] final dynamic #t29 = [1097] [1097] #0#13#isSet = [1097] [1097] true in [1097] [1097] #0#13 = [1097] [1097] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1097]([-1] #C4){(core::Object?) → dynamic}) == null) || [1097] [1097] [1097] [1097] [1097] [1097] null is dynamic && [1097] [1097] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[1097]([-1] #C4){(core::Object?) → core::bool}) && [1103]([1103] let [1103] final dynamic #t30 = [1103] [1103] a = [1097] [1097] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [1097] [1097] let [1097] final dynamic #t31 = [1097] [1097] #0#13#isSet = [1097] [1097] true in [1097] [1097] #0#13 = [1097] [1097] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1097]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
[1090]          {
[1113]            [1113] [1113] core::print [1118]([1119] a);
[1129]            [1129] [1129] #t21 = [1129] [1129] 0;
[1129]            break #L4;
          }
        }
      }
[1150]      {
[1150]        if([1155] [1155] [-1] [-1] #C1 =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[1150]          {
[1164]            [1164] [1164] core::print [1169]([1170] o);
[-1]            break #L3;
          }
        }
      }
[1178]      {
[1178]        if([1195] [1195] [-1] [-1] #C4 =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[996]          [996] [996] #t21 = [996] [996] 0;
[1178]          break #L4;
        }
      }
[1241]      {
[1241]        if([1258] [1258] [-1] [-1] #C7 =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[996]          [996] [996] #t21 = [996] [996] 1;
[1241]          break #L4;
        }
      }
    }
[996]    switch([996] [996] #t21) /* dynamic */ {
[996]      #L5:
      case [996] [996] #C1:
[996]        {
[1178]          {
[1204]            [1204] [1204] core::print [1209]([1210] 1);
[1220]            continue #L6;
          }
        }
[996]      #L6:
      case [996] [996] #C4:
[996]        {
[1241]          {
[1267]            [1267] [1267] core::print [1272]([1273] 2);
          }
        }
    }
  }
}
[1284]static method switchStatementWithContinueNested([1318] dynamic o1, [1322] dynamic o2) → dynamic {
[1330]  #L7:
[1330]  {
[1330]    [1330] core::int #t32 = [1330] [1330] [1330] [1330] 1.{core::int::unary-}[1330](){() → core::int};
[1338]    [1338] final synthesized dynamic #2#0 = [1338] [1338] o1;
[-1]    [-1] synthesized dynamic #2#9;
[-1]    [-1] synthesized core::bool #2#9#isSet = [1389] [1389] false;
[1330]    #L8:
[1330]    {
[1348]      {
[1358]        [1358] hoisted dynamic a;
[1348]        if([1353] [1353] [1353] [1353] [1353] [1353] [-1] [-1] #2#0 is core::List<dynamic> && [1353] [1353] [1353] [1353] [-1] [-1] #2#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [1358]([1358] let [1358] final dynamic #t33 = [1358] [1358] a = [1353] [1353] [-1] [-1] #2#0{core::List<dynamic>}.{core::List::[]}[1353]([1353] 0){(core::int) → dynamic} in [-1] [-1] true)) {
[1348]          {
[1368]            [1368] [1368] core::print [1373]([1374] a);
[-1]            break #L7;
          }
        }
      }
[1382]      {
[1395]        [1395] hoisted dynamic a;
[1382]        if([1387] [1387] [1389] [1389] [1387] [1387] [-1] [-1] #2#0 is core::Map<dynamic, dynamic> && [1389]([1389] [1389] [1389]![1389]([1389] [1389]([1389] [-1] [-1] #2#9#isSet ?{dynamic} [-1] [-1] #2#9{dynamic} : [1389] [1389] let [1389] final dynamic #t34 = [1389] [1389] #2#9#isSet = [1389] [1389] true in [1389] [1389] #2#9 = [1389] [1389] [-1] [-1] #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1389]([-1] #C4){(core::Object?) → dynamic}) == null) || [1389] [1389] [1389] [1389] [1389] [1389] null is dynamic && [1389] [1389] [-1] [-1] #2#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[1389]([-1] #C4){(core::Object?) → core::bool}) && [1395]([1395] let [1395] final dynamic #t35 = [1395] [1395] a = [1389] [1389] [-1] [-1] #2#9#isSet ?{dynamic} [-1] [-1] #2#9{dynamic} : [1389] [1389] let [1389] final dynamic #t36 = [1389] [1389] #2#9#isSet = [1389] [1389] true in [1389] [1389] #2#9 = [1389] [1389] [-1] [-1] #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1389]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
[1382]          {
[1405]            [1405] [1405] core::print [1410]([1411] a);
[1421]            #L9:
[1421]            {
[1421]              [1421] core::int #t37 = [1421] [1421] [1421] [1421] 1.{core::int::unary-}[1421](){() → core::int};
[1429]              [1429] final synthesized dynamic #0#0 = [1429] [1429] o2;
[-1]              [-1] synthesized core::int #0#2;
[-1]              [-1] synthesized core::bool #0#2#isSet = [1448] [1448] false;
[-1]              [-1] synthesized dynamic #0#13;
[-1]              [-1] synthesized core::bool #0#13#isSet = [1539] [1539] false;
[-1]              [-1] dynamic #t38;
[1421]              #L10:
[1421]              {
[1443]                {
[1453]                  [1453] lowered hoisted dynamic a#case#0;
[1489]                  [1489] lowered hoisted dynamic a#case#1;
[1443]                  if([1421] [1421] [1453] [1453] [-1] [-1] [1448] [1448] [1448] [1448] [1448] [1448] [-1] [-1] #0#0 is core::List<dynamic> && [1448] [1448] [1448]([1448] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1448] [1448] let [1448] final dynamic #t39 = [1448] [1448] #0#2#isSet = [1448] [1448] true in [1448] [1448] #0#2 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [1453]([1453] let [1453] final dynamic #t40 = [1453] [1453] a#case#0 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1448]([1448] 0){(core::int) → dynamic} in [-1] [-1] true) && [1463] [1463] [1463] [1463] [1461] [1461] a#case#0{dynamic}.> [1463]([1465] 5) as{TypeError} core::bool && [1421]([1421] let [1421] final dynamic #t41 = [1421] [1421] #t38 = [1453] [1453] a#case#0 in [1453] [1453] true) || [1489] [1489] [-1] [-1] [1481] [1481] [1481] [1481] [1481] [1481] [-1] [-1] #0#0 is core::List<dynamic> && [1481] [1481] [1448]([1448] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1448] [1448] let [1448] final dynamic #t42 = [1448] [1448] #0#2#isSet = [1448] [1448] true in [1448] [1448] #0#2 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [1489]([1489] let [1489] final dynamic #t43 = [1489] [1489] a#case#1 = [1481] [1481] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1481]([1481] 1){(core::int) → dynamic} in [-1] [-1] true) && [1499] [1499] [1499] [1499] [1497] [1497] a#case#1{dynamic}.< [1499]([1501] 5) as{TypeError} core::bool && [1421]([1421] let [1421] final dynamic #t44 = [1421] [1421] #t38 = [1489] [1489] a#case#1 in [1489] [1489] true)) {
[1453]                    [1453] dynamic a = [-1] [-1] #t38{dynamic};
[1443]                    {
[1514]                      [1514] [1514] core::print [1519]([1520] a);
[-1]                      break #L9;
                    }
                  }
                }
[1532]                {
[1545]                  [1545] hoisted dynamic a;
[1532]                  if([1537] [1537] [1539] [1539] [1537] [1537] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [1539]([1539] [1539] [1539]![1539]([1539] [1539]([1539] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [1539] [1539] let [1539] final dynamic #t45 = [1539] [1539] #0#13#isSet = [1539] [1539] true in [1539] [1539] #0#13 = [1539] [1539] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1539]([-1] #C4){(core::Object?) → dynamic}) == null) || [1539] [1539] [1539] [1539] [1539] [1539] null is dynamic && [1539] [1539] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[1539]([-1] #C4){(core::Object?) → core::bool}) && [1545]([1545] let [1545] final dynamic #t46 = [1545] [1545] a = [1539] [1539] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [1539] [1539] let [1539] final dynamic #t47 = [1539] [1539] #0#13#isSet = [1539] [1539] true in [1539] [1539] #0#13 = [1539] [1539] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1539]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
[1532]                    {
[1559]                      [1559] [1559] core::print [1564]([1565] a);
[1579]                      [1579] [1579] #t32 = [1579] [1579] 1;
[1579]                      break #L8;
                    }
                  }
                }
[1605]                {
[1605]                  if([1610] [1610] [-1] [-1] #C1 =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[1605]                    {
[1623]                      [1623] [1623] core::print [1628]([1629] o2);
[1644]                      [1644] [1644] #t37 = [1644] [1644] 0;
[1644]                      break #L10;
                    }
                  }
                }
[1670]                {
[1670]                  if([1692] [1692] [-1] [-1] #C4 =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[1421]                    [1421] [1421] #t37 = [1421] [1421] 0;
[1670]                    break #L10;
                  }
                }
[1751]                {
[1751]                  if([1773] [1773] [-1] [-1] #C7 =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[1421]                    [1421] [1421] #t37 = [1421] [1421] 1;
[1751]                    break #L10;
                  }
                }
              }
[1421]              switch([1421] [1421] #t37) /* dynamic */ {
[1421]                #L11:
                case [1421] [1421] #C1:
[1421]                  {
[1670]                    {
[1705]                      [1705] [1705] core::print [1710]([1711] 1);
[1725]                      continue #L12;
                    }
                  }
[1421]                #L12:
                case [1421] [1421] #C4:
[1421]                  {
[1751]                    {
[1786]                      [1786] [1786] core::print [1791]([1792] 2);
[1806]                      [1806] [1806] #t32 = [1806] [1806] 0;
[1806]                      break #L8;
                    }
                  }
              }
            }
[-1]            break #L7;
          }
        }
      }
[1836]      {
[1836]        if([1841] [1841] [-1] [-1] #C1 =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #2#0) {
[1836]          {
[1850]            [1850] [1850] core::print [1855]([1856] o1);
[-1]            break #L7;
          }
        }
      }
[1865]      {
[1865]        if([1883] [1883] [-1] [-1] #C4 =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #2#0) {
[1330]          [1330] [1330] #t32 = [1330] [1330] 0;
[1865]          break #L8;
        }
      }
[1930]      {
[1930]        if([1948] [1948] [-1] [-1] #C7 =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #2#0) {
[1330]          [1330] [1330] #t32 = [1330] [1330] 1;
[1930]          break #L8;
        }
      }
    }
[1330]    switch([1330] [1330] #t32) /* dynamic */ {
[1330]      #L13:
      case [1330] [1330] #C1:
[1330]        {
[1865]          {
[1892]            [1892] [1892] core::print [1897]([1898] 1);
[1908]            continue #L14;
          }
        }
[1330]      #L14:
      case [1330] [1330] #C4:
[1330]        {
[1930]          {
[1957]            [1957] [1957] core::print [1962]([1963] 2);
[1973]            #L15:
[1973]            {
[1973]              [1973] core::int #t48 = [1973] [1973] [1973] [1973] 1.{core::int::unary-}[1973](){() → core::int};
[1981]              [1981] final synthesized dynamic #1#0 = [1981] [1981] o2;
[-1]              [-1] synthesized core::int #1#2;
[-1]              [-1] synthesized core::bool #1#2#isSet = [2000] [2000] false;
[-1]              [-1] synthesized dynamic #1#13;
[-1]              [-1] synthesized core::bool #1#13#isSet = [2091] [2091] false;
[-1]              [-1] dynamic #t49;
[1973]              #L16:
[1973]              {
[1995]                {
[2005]                  [2005] lowered hoisted dynamic a#case#0;
[2041]                  [2041] lowered hoisted dynamic a#case#1;
[1995]                  if([1973] [1973] [2005] [2005] [-1] [-1] [2000] [2000] [2000] [2000] [2000] [2000] [-1] [-1] #1#0 is core::List<dynamic> && [2000] [2000] [2000]([2000] [-1] [-1] #1#2#isSet ?{core::int} [-1] [-1] #1#2{core::int} : [2000] [2000] let [2000] final dynamic #t50 = [2000] [2000] #1#2#isSet = [2000] [2000] true in [2000] [2000] #1#2 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [2005]([2005] let [2005] final dynamic #t51 = [2005] [2005] a#case#0 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::[]}[2000]([2000] 0){(core::int) → dynamic} in [-1] [-1] true) && [2015] [2015] [2015] [2015] [2013] [2013] a#case#0{dynamic}.> [2015]([2017] 5) as{TypeError} core::bool && [1973]([1973] let [1973] final dynamic #t52 = [1973] [1973] #t49 = [2005] [2005] a#case#0 in [2005] [2005] true) || [2041] [2041] [-1] [-1] [2033] [2033] [2033] [2033] [2033] [2033] [-1] [-1] #1#0 is core::List<dynamic> && [2033] [2033] [2000]([2000] [-1] [-1] #1#2#isSet ?{core::int} [-1] [-1] #1#2{core::int} : [2000] [2000] let [2000] final dynamic #t53 = [2000] [2000] #1#2#isSet = [2000] [2000] true in [2000] [2000] #1#2 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [2041]([2041] let [2041] final dynamic #t54 = [2041] [2041] a#case#1 = [2033] [2033] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::[]}[2033]([2033] 1){(core::int) → dynamic} in [-1] [-1] true) && [2051] [2051] [2051] [2051] [2049] [2049] a#case#1{dynamic}.< [2051]([2053] 5) as{TypeError} core::bool && [1973]([1973] let [1973] final dynamic #t55 = [1973] [1973] #t49 = [2041] [2041] a#case#1 in [2041] [2041] true)) {
[2005]                    [2005] dynamic a = [-1] [-1] #t49{dynamic};
[1995]                    {
[2066]                      [2066] [2066] core::print [2071]([2072] a);
[-1]                      break #L15;
                    }
                  }
                }
[2084]                {
[2097]                  [2097] hoisted dynamic a;
[2084]                  if([2089] [2089] [2091] [2091] [2089] [2089] [-1] [-1] #1#0 is core::Map<dynamic, dynamic> && [2091]([2091] [2091] [2091]![2091]([2091] [2091]([2091] [-1] [-1] #1#13#isSet ?{dynamic} [-1] [-1] #1#13{dynamic} : [2091] [2091] let [2091] final dynamic #t56 = [2091] [2091] #1#13#isSet = [2091] [2091] true in [2091] [2091] #1#13 = [2091] [2091] [-1] [-1] #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[2091]([-1] #C4){(core::Object?) → dynamic}) == null) || [2091] [2091] [2091] [2091] [2091] [2091] null is dynamic && [2091] [2091] [-1] [-1] #1#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[2091]([-1] #C4){(core::Object?) → core::bool}) && [2097]([2097] let [2097] final dynamic #t57 = [2097] [2097] a = [2091] [2091] [-1] [-1] #1#13#isSet ?{dynamic} [-1] [-1] #1#13{dynamic} : [2091] [2091] let [2091] final dynamic #t58 = [2091] [2091] #1#13#isSet = [2091] [2091] true in [2091] [2091] #1#13 = [2091] [2091] [-1] [-1] #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[2091]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
[2084]                    {
[2111]                      [2111] [2111] core::print [2116]([2117] a);
[2131]                      continue #L14;
                    }
                  }
                }
[2157]                {
[2157]                  if([2162] [2162] [-1] [-1] #C1 =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #1#0) {
[2157]                    {
[2175]                      [2175] [2175] core::print [2180]([2181] o2);
[2196]                      [2196] [2196] #t48 = [2196] [2196] 0;
[2196]                      break #L16;
                    }
                  }
                }
[2222]                {
[2222]                  if([2244] [2244] [-1] [-1] #C4 =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #1#0) {
[1973]                    [1973] [1973] #t48 = [1973] [1973] 0;
[2222]                    break #L16;
                  }
                }
[2303]                {
[2303]                  if([2325] [2325] [-1] [-1] #C7 =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #1#0) {
[1973]                    [1973] [1973] #t48 = [1973] [1973] 1;
[2303]                    break #L16;
                  }
                }
              }
[1973]              switch([1973] [1973] #t48) /* dynamic */ {
[1973]                #L17:
                case [1973] [1973] #C1:
[1973]                  {
[2222]                    {
[2257]                      [2257] [2257] core::print [2262]([2263] 1);
[2277]                      continue #L18;
                    }
                  }
[1973]                #L18:
                case [1973] [1973] #C4:
[1973]                  {
[2303]                    {
[2338]                      [2338] [2338] core::print [2343]([2344] 2);
[2358]                      continue #L13;
                    }
                  }
              }
            }
          }
        }
    }
  }
}
[2391]static method switchStatementEnum([2413] self::E o) → dynamic {
[2420]  #L19:
[2420]  switch([2428] [2428] o) /* isExplicitlyExhaustive, self::E */ {
[2437]    #L20:
    case [2444] [2444] #C3:
[2437]      {
[2453]        [2453] [2453] core::print [2458]([2459] "a");
[-1]        break #L19;
      }
[2469]    #L21:
    case [2476] [2476] #C6:
[2469]      {
[2485]        [2485] [2485] core::print [2490]([2491] "b");
[-1]        break #L19;
      }
[2501]    #L22:
    case [2508] [2508] #C9:
[2501]      {
[2517]        [2517] [2517] core::print [2522]([2523] "c");
      }
  }
}
[2536]static method switchStatementEnumWithGuard([2567] self::E o) → dynamic {
[2574]  #L23:
[2574]  {
[2582]    [2582] final synthesized self::E #0#0 = [2582] [2582] o;
[2591]    {
[2591]      if([-1] [-1] [2598] [2598] [-1] [-1] #C3 =={core::Object::==}{(core::Object) → core::bool} [-1] [-1] #0#0 && [2605] [2605] true) {
[2591]        {
[2617]          [2617] [2617] core::print [2622]([2623] "a");
[-1]          break #L23;
        }
      }
    }
[2633]    {
[2633]      if([2640] [2640] [-1] [-1] #C6 =={core::Object::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[2633]        {
[2649]          [2649] [2649] core::print [2654]([2655] "b");
[-1]          break #L23;
        }
      }
    }
[2665]    {
[2665]      if([2670] [2670] true) {
      }
    }
  }
}
[2680]static method switchStatementEnumWithLabel([2711] self::E o) → dynamic {
[2718]  #L24:
[2718]  switch([2726] [2726] o) /* isExplicitlyExhaustive, self::E */ {
[2735]    #L25:
    case [2742] [2742] #C3:
[2735]      {
[2751]        [2751] [2751] core::print [2756]([2757] "a");
[-1]        break #L24;
      }
[2767]    #L26:
    case [2785] [2785] #C6:
[2767]      {
[2794]        [2794] [2794] core::print [2799]([2800] "b");
[-1]        break #L24;
      }
[2810]    #L27:
    case [2817] [2817] #C9:
[2810]      {
[2826]        [2826] [2826] core::print [2831]([2832] "c");
      }
  }
}
[2845]static method switchStatementEnumWithContinue([2879] self::E o) → dynamic {
[2886]  #L28:
[2886]  switch([2894] [2894] o) /* isExplicitlyExhaustive, self::E */ {
[2903]    #L29:
    case [2910] [2910] #C3:
[2903]      {
[2919]        [2919] [2919] core::print [2924]([2925] "a");
[2937]        continue #L30;
      }
[2958]    #L30:
    case [2977] [2977] #C6:
[2958]      {
[2986]        [2986] [2986] core::print [2991]([2992] "b");
[3004]        continue #L31;
      }
[3025]    #L31:
    case [3044] [3044] #C9:
[3025]      {
[3053]        [3053] [3053] core::print [3058]([3059] "c");
      }
  }
}
[3072]static method switchStatementPrimitiveEquals([3103] dynamic o) → dynamic {
[3110]  #L32:
[3110]  switch([3118] [3118] o) /* dynamic */ {
[3127]    #L33:
    case [3138] [3138] #C11:
[3127]      {
[3164]        [3164] [3164] core::print [3169]([3170] "a");
[-1]        break #L32;
      }
[3180]    #L34:
    case [3191] [3191] #C12:
[3180]      {
[3217]        [3217] [3217] core::print [3222]([3223] "b");
      }
  }
}
[3236]static method switchStatementNonPrimitiveEquals([3270] dynamic o) → dynamic {
[3277]  #L35:
[3277]  {
[3285]    [3285] final synthesized dynamic #0#0 = [3285] [3285] o;
[3294]    {
[3294]      if([3305] [3305] [-1] [-1] #C13 =={self::NonPrimitiveEquals::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[3294]        {
[3334]          [3334] [3334] core::print [3339]([3340] "a");
[-1]          break #L35;
        }
      }
    }
[3350]    {
[3350]      if([3361] [3361] [-1] [-1] #C14 =={self::NonPrimitiveEquals::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[3350]        {
[3390]          [3390] [3390] core::print [3395]([3396] "b");
        }
      }
    }
  }
}
[3409]static method switchExpression([3426] dynamic o) → dynamic {
[3433]  return [3440] [3440] block {
[-1]    [-1] dynamic #t59;
[3448]    [3448] final synthesized dynamic #0#0 = [3448] [3448] o;
[-1]    [-1] synthesized dynamic #0#9;
[-1]    [-1] synthesized core::bool #0#9#isSet = [3477] [3477] false;
[3440]    #L36:
[3440]    {
[3465]      {
[3462]        [3462] hoisted dynamic a;
[3465]        if([3457] [3457] [3457] [3457] [-1] [-1] #0#0 is core::List<dynamic> && [3457] [3457] [3457] [3457] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4) {
[3462]          [3462] [3462] a = [3457] [3457] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[3457]([3457] 0){(core::int) → dynamic};
[-1]          [-1] [-1] #t59 = [3468] [3468] a;
[3465]          break #L36;
        }
      }
[3486]      {
[3483]        [3483] hoisted dynamic a;
[3486]        if([3477] [3477] [3475] [3475] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [3477]([3477] [3477] [3477]![3477]([3477] [3477]([3477] [-1] [-1] #0#9#isSet ?{dynamic} [-1] [-1] #0#9{dynamic} : [3477] [3477] let [3477] final dynamic #t60 = [3477] [3477] #0#9#isSet = [3477] [3477] true in [3477] [3477] #0#9 = [3477] [3477] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[3477]([-1] #C4){(core::Object?) → dynamic}) == null) || [3477] [3477] [3477] [3477] [3477] [3477] null is dynamic && [3477] [3477] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[3477]([-1] #C4){(core::Object?) → core::bool})) {
[3483]          [3483] [3483] a = [3477] [3477] [-1] [-1] #0#9#isSet ?{dynamic} [-1] [-1] #0#9{dynamic} : [3477] [3477] let [3477] final dynamic #t61 = [3477] [3477] #0#9#isSet = [3477] [3477] true in [3477] [3477] #0#9 = [3477] [3477] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[3477]([-1] #C4){(core::Object?) → dynamic};
[-1]          [-1] [-1] #t59 = [3489] [3489] a;
[3486]          break #L36;
        }
      }
[3498]      {
[3498]        if([3496] [3496] true) {
[-1]          [-1] [-1] #t59 = [3501] [3501] null;
[3498]          break #L36;
        }
      }
    }
  } =>[-1] [-1] #t59;
}
[3515]static method switchExpressionEnum([3538] self::E o) → dynamic {
[3545]  return [3552] [3552] block {
[-1]    [-1] core::int #t62;
[3552]    #L37:
[3552]    switch([3560] [3560] o) /* isExplicitlyExhaustive, self::E */ {
[3573]      #L38:
      case [3571] [3571] #C3:
[3573]        {
[3576]          [3576] [3576] #t62 = [3576] [3576] 0;
[3576]          break #L37;
        }
[3587]      #L39:
      case [3585] [3585] #C6:
[3587]        {
[3590]          [3590] [3590] #t62 = [3590] [3590] 1;
[3590]          break #L37;
        }
[3601]      #L40:
      case [3599] [3599] #C9:
[3601]        {
[3604]          [3604] [3604] #t62 = [3604] [3604] 2;
[3604]          break #L37;
        }
    }
  } =>[-1] [-1] #t62;
}
[3615]static method switchExpressionEnumWithGuard([3647] self::E o) → dynamic {
[3654]  return [3661] [3661] block {
[-1]    [-1] core::int #t63;
[3669]    [3669] final synthesized self::E #0#0 = [3669] [3669] o;
[3661]    #L41:
[3661]    {
[3692]      {
[3692]        if([-1] [-1] [3680] [3680] [-1] [-1] #C3 =={core::Object::==}{(core::Object) → core::bool} [-1] [-1] #0#0 && [3687] [3687] true) {
[-1]          [-1] [-1] #t63 = [3695] [3695] 0;
[3692]          break #L41;
        }
      }
[3706]      {
[3706]        if([3704] [3704] [-1] [-1] #C6 =={core::Object::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[-1]          [-1] [-1] #t63 = [3709] [3709] 1;
[3706]          break #L41;
        }
      }
[3718]      {
[3718]        if([3716] [3716] true) {
[-1]          [-1] [-1] #t63 = [3721] [3721] 2;
[3718]          break #L41;
        }
      }
    }
  } =>[-1] [-1] #t63;
}
[3732]static method switchExpressionPrimitiveEquals([3764] dynamic o) → dynamic {
[3771]  return [3778] [3778] block {
[-1]    [-1] core::int #t64;
[3786]    [3786] final synthesized dynamic #0#0 = [3786] [3786] o;
[3778]    #L42:
[3778]    {
[3820]      {
[3820]        if([3801] [3801] [-1] [-1] #C11 =={core::Object::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[-1]          [-1] [-1] #t64 = [3823] [3823] 0;
[3820]          break #L42;
        }
      }
[3855]      {
[3855]        if([3836] [3836] [-1] [-1] #C12 =={core::Object::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[-1]          [-1] [-1] #t64 = [3858] [3858] 1;
[3855]          break #L42;
        }
      }
[3867]      {
[3867]        if([3865] [3865] true) {
[-1]          [-1] [-1] #t64 = [3870] [3870] 2;
[3867]          break #L42;
        }
      }
    }
  } =>[-1] [-1] #t64;
}
[3881]static method switchExpressionNonPrimitiveEquals([3916] dynamic o) → dynamic {
[3923]  return [3930] [3930] block {
[-1]    [-1] core::int #t65;
[3938]    [3938] final synthesized dynamic #0#0 = [3938] [3938] o;
[3930]    #L43:
[3930]    {
[3975]      {
[3975]        if([3953] [3953] [-1] [-1] #C13 =={self::NonPrimitiveEquals::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[-1]          [-1] [-1] #t65 = [3978] [3978] 0;
[3975]          break #L43;
        }
      }
[4013]      {
[4013]        if([3991] [3991] [-1] [-1] #C14 =={self::NonPrimitiveEquals::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[-1]          [-1] [-1] #t65 = [4016] [4016] 1;
[4013]          break #L43;
        }
      }
[4025]      {
[4025]        if([4023] [4023] true) {
[-1]          [-1] [-1] #t65 = [4028] [4028] 2;
[4025]          break #L43;
        }
      }
    }
  } =>[-1] [-1] #t65;
}
[4039]static method switchStatementSymbol([4068] core::Symbol s) → dynamic {
[4075]  #L44:
[4075]  {
[4083]    [4083] final synthesized core::Symbol #0#0 = [4083] [4083] s;
[4092]    {
[4092]      if([4097] [4097] [-1] [-1] #C15 =={core::Symbol::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[4092]        {
[4107]          return [4114] [4114] 0;
        }
      }
    }
[4121]    {
[4121]      if([4132] [4132] [-1] [-1] #C16 =={core::Symbol::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[4121]        {
[4151]          return [4158] [4158] 1;
        }
      }
    }
[4165]    {
[4165]      {
[4165]        {
[4180]          return [4187] [4187] 2;
        }
      }
    }
  }
}
[4197]static method switchExpressionSymbol([4227] core::Symbol s) → dynamic {
[4234]  return [4241] [4241] block {
[-1]    [-1] core::int #t66;
[4249]    [4249] final synthesized core::Symbol #0#0 = [4249] [4249] s;
[4241]    #L45:
[4241]    {
[4261]      {
[4261]        if([4258] [4258] [-1] [-1] #C15 =={core::Symbol::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[-1]          [-1] [-1] #t66 = [4264] [4264] 0;
[4261]          break #L45;
        }
      }
[4289]      {
[4289]        if([4277] [4277] [-1] [-1] #C16 =={core::Symbol::==}{(core::Object) → core::bool} [-1] [-1] #0#0) {
[-1]          [-1] [-1] #t66 = [4292] [4292] 1;
[4289]          break #L45;
        }
      }
[4301]      {
[4301]        if([4299] [4299] true) {
[-1]          [-1] [-1] #t66 = [4304] [4304] 2;
[4301]          break #L45;
        }
      }
    }
  } =>[-1] [-1] #t66;
}

constants  {
  #C1 = 0
  #C2 = "a"
  #C3 = self::E {index:#C1, _name:#C2}
  #C4 = 1
  #C5 = "b"
  #C6 = self::E {index:#C4, _name:#C5}
  #C7 = 2
  #C8 = "c"
  #C9 = self::E {index:#C7, _name:#C8}
  #C10 = <self::E>[#C3, #C6, #C9]
  #C11 = self::PrimitiveEquals {field:#C1}
  #C12 = self::PrimitiveEquals {field:#C4}
  #C13 = self::NonPrimitiveEquals {field:#C1}
  #C14 = self::NonPrimitiveEquals {field:#C4}
  #C15 = #a
  #C16 = #b
}


Constructor coverage from constants:
org-dartlang-testcase:///switch_encoding.dart:
- E. (from org-dartlang-testcase:///switch_encoding.dart:5:6)
- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
- PrimitiveEquals. (from org-dartlang-testcase:///switch_encoding.dart:10:9)
- NonPrimitiveEquals. (from org-dartlang-testcase:///switch_encoding.dart:16:9)
