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

class C extends core::Object {
  field dynamic t;
  constructor foo(dynamic f) → void
    : self::C::t = let final Vector #context = MakeVector(2) in let dynamic #t1 = #context[1] = f in MakeClosure<() → dynamic>(self::closure#C#foo#function, #context), super core::Object::•() {
    final Vector #context = MakeVector(2);
    #context[1] = f;
    core::print(1);
  }
}
static method main() → dynamic {
  core::print(0);
  dynamic c = new self::C::foo(MakeClosure<() → dynamic>(self::closure#main#function, null));
  core::print(2);
  c.t();
  core::print(3);
}
static method closure#C#foo#function(Vector #contextParameter) → dynamic {
  return (#contextParameter[1]).call();
}
static method closure#main#function(Vector #contextParameter) → dynamic {
  return core::print("hest");
}
