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

class X extends core::Object {
  default constructor •() → void
    : super core::Object::•()
    ;
}
class A extends core::Object {
  field self::X x;
  constructor •(self::X x) → void
    : self::A::x = x, super core::Object::•() {}
}
class B extends core::Object {
  field self::X x;
  constructor •(self::X x) → void
    : final dynamic #context = MakeVector(3), this self::B::#redir(x, #context)
    ;
  constructor #redir(self::X x, final dynamic #context) → void
    : dynamic #t1 = #context[2] = x, self::B::x = #context[2], super core::Object::•() {
    final () → dynamic fn = MakeClosure<() → dynamic>(self::closure#B#function#fn, #context);
    fn.call();
  }
}
static method main() → dynamic {
  self::A a = new self::A::•(new self::X::•());
  self::B b = new self::B::•(new self::X::•());
}
static method closure#B#function#fn(dynamic #contextParameter) → dynamic {
  core::print(#contextParameter[2]);
}
