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

static method range(core::int high) → dynamic {
  final dynamic #context = MakeVector(3);
  #context[2] = high;
  final (core::int) → dynamic iter = MakeClosure<(core::int) → dynamic>(self::closure#range#iter, #context);
  return iter;
}
static method main() → dynamic {
  dynamic sum = 0;
  for (dynamic x in self::range(10).call(2))
    sum = sum.+(x);
  if(!sum.==(44)) {
    throw core::Exception::•("Incorrect output.");
  }
}
static method closure#range#iter(dynamic #contextParameter, core::int low) → dynamic /* originally sync* */ {
  final dynamic #context = MakeVector(3);
  #context[1] = #contextParameter;
  #context[2] = low;
  dynamic :await_jump_var = 0;
  dynamic :await_ctx_var;
  dynamic :sync_op = (core::Iterator<dynamic> :iterator) → core::bool yielding {
    {
      while ((let final dynamic #t1 = #contextParameter[2] in let final dynamic #t2 = #contextParameter[2] = #t1.-(1) in #t1).>(#context[2])) {
        :iterator._current = #context[1][2];
        [yield] true;
      }
    }
    return false;
  };
  return new core::_SyncIterable::•(:sync_op);
}
