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

static method main() → void {
  final core::List<core::String> works = <core::String>["b", "l"];
  final core::List<core::String> fails = <core::String>["c"];
  for (final core::List<core::String> test in <core::List<core::String>>[works, fails]) {
    final void _ = block {
      void #t1;
      final synthesized core::List<core::String> #0#0 = test;
      synthesized core::int #0#1;
      synthesized core::bool #0#1#isSet = false;
      synthesized core::String #0#4;
      synthesized core::bool #0#4#isSet = false;
      #L1:
      {
        {
          final hoisted core::String b;
          final hoisted core::String d;
          final hoisted core::List<core::String> x;
          if((#0#1#isSet ?{core::int} #0#1{core::int} : let final dynamic #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool}) {
            b = #0#4#isSet ?{core::String} #0#4{core::String} : let final dynamic #t3 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::String};
            d = #0#0.{core::List::[]}(1){(core::int) → core::String};
            x = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::String>};
            #t1 = core::print("${b} ${d} ${x}");
            break #L1;
          }
        }
        {
          final hoisted core::String f;
          final hoisted core::List<core::String> args;
          if((#0#1#isSet ?{core::int} #0#1{core::int} : let final dynamic #t4 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
            f = #0#4#isSet ?{core::String} #0#4{core::String} : let final dynamic #t5 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::String};
            args = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<core::String>};
            #t1 = core::print("${f} ${args}");
            break #L1;
          }
        }
        {
          if(true) {
            #t1 = throw new core::UnimplementedError::•();
            break #L1;
          }
        }
      }
    } =>#t1;
  }
}

constants  {
  #C1 = 2
  #C2 = 1
}
