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

class Closure#main#function extends core::Object implements core::Function {
  field core::String note = "This is temporary. The VM doesn't need closure classes.";
  field mock::Context context;
  constructor •(final mock::Context context) → dynamic
    : self::Closure#main#function::context = context
    ;
  method call() → dynamic {
    "This is a temporary solution. In the VM, this will become an additional parameter.";
    final mock::Context #contextParameter = this.{self::Closure#main#function::context};
    return #contextParameter.[](0);
  }
}
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 mock::Context #context = new mock::Context::•(1);
    #context.parent = null;
    #context.[]=(0, i);
    closures.add(new 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}");
  }
}
