library;
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");
        break #L1;
      }
    #L3:
    case #C2:
      {
        (() → core::Null? {
          switch(inner) {
            #L4:
            case #C1:
              {
                whereWasI.{core::List::add}("inner 0");
                continue #L5;
              }
            #L5:
            case #C2:
              {
                whereWasI.{core::List::add}("inner 1");
              }
          }
        }).call();
      }
  }
  if(!whereWasI.{core::List::length}.{core::num::==}(2) || !whereWasI.{core::List::[]}(0).{core::String::==}("inner 0") || !whereWasI.{core::List::[]}(1).{core::String::==}("inner 1")) {
    throw "Unexpected path.";
  }
  core::print(whereWasI);
}

constants  {
  #C1 = 0
  #C2 = 1
}
