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

static method main(core::List<core::String>/Nothing args) → void/Null {
  dynamic/core::int* {int} x = args.length;
  #L1:
  switch(x) {
    #L2:
    case 3:
      {
        x = 4;
        throw new core::FallThroughError::•();
      }
    #L3:
    case 5:
      {
        break #L1;
      }
    #L4:
    case 6:
    case 7:
      {
        if(args.[](0).==("")) {
          break #L1;
        }
        else {
          return;
        }
        throw new core::FallThroughError::•();
      }
    #L5:
    case 4:
      {
        break #L1;
      }
  }
}
