library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

static method main() → void {
  core::List<core::String> whereWasI = <core::String>[];
  core::int outer = 1;
  core::int inner = 0;
  #L1:
  switch(outer) {
    #L2:
    case #C1:
      {
        whereWasI.{core::List::add}("outer 0"){(core::String) → void};
        break #L1;
      }
    #L3:
    case #C2:
      {
        (() → Null {
          switch(inner) {
            #L4:
            case #C1:
              {
                whereWasI.{core::List::add}("inner 0"){(core::String) → void};
                continue #L5;
              }
            #L5:
            case #C2:
              {
                whereWasI.{core::List::add}("inner 1"){(core::String) → void};
              }
          }
        })(){() → Null};
      }
  }
  if(!(whereWasI.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} 2) || !(whereWasI.{core::List::[]}(0){(core::int) → core::String} =={core::String::==}{(core::Object) → core::bool} "inner 0") || !(whereWasI.{core::List::[]}(1){(core::int) → core::String} =={core::String::==}{(core::Object) → core::bool} "inner 1")) {
    throw "Unexpected path.";
  }
  core::print(whereWasI);
}

constants  {
  #C1 = 0
  #C2 = 1
}
