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

static const field dynamic numbers = const <core::int>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
static method main() → dynamic {
  dynamic closures = <dynamic>[];
  for (core::int i in self::numbers) {
    final Vector #context = MakeVector(3);
    #context[2] = i;
    {
      closures.add(MakeClosure<() → dynamic>(self::closure#main#function, #context));
    }
  }
  core::int sum = 0;
  for (core::Function f in closures) {
    sum = sum.+(f.call());
  }
  core::int expectedSum = self::numbers.length.-(1).*(self::numbers.length).~/(2);
  if(!expectedSum.==(sum)) {
    throw core::Exception::•("Unexpected sum = ${sum} != ${expectedSum}");
  }
}
static method closure#main#function(Vector #contextParameter) → dynamic {
  return #contextParameter[2];
}
