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

static method main(core::List<core::String> args) → void {
  dynamic x = args.length;
  #L1:
  switch(x) {
    #L2:
    case 3:
      {
        x = 4;
        throw new core::FallThroughError::_create("org-dartlang-testcase:///fallthrough.dart", 8);
      }
    #L3:
    case 5:
      {
        break #L1;
      }
    #L4:
    case 6:
    case 7:
      {
        if(args.[](0).==("")) {
          break #L1;
        }
        else {
          return;
        }
        throw new core::FallThroughError::_create("org-dartlang-testcase:///fallthrough.dart", 12);
      }
    #L5:
    case 4:
      {
        break #L1;
      }
  }
}
