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

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