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

class B extends core::Object {
  field core::num x;
  field core::String y;
  constructor •(core::num x, core::String y) → void
    : self::B::x = x, self::B::y = y, super core::Object::•() {
    self::events = self::events.{core::String::+}("super(${this.{self::B::x}}, ${this.{self::B::y}})\n");
  }
}
class C extends self::B {
  final field dynamic z;
  constructor •() → void
    : final core::int #t1 = self::f(1), final core::String #t2 = self::g(2), self::C::z = self::f(3), super self::B::•(#t1, #t2)
    ;
}
static field core::String events = "";
static method f(dynamic x) → core::int {
  self::events = self::events.{core::String::+}("f(${x})\n");
  return 0;
}
static method g(dynamic x) → core::String {
  self::events = self::events.{core::String::+}("g(${x})\n");
  return "foo";
}
static method main() → dynamic {
  new self::C::•();
  if(!self::events.{core::String::==}("f(1)\ng(2)\nf(3)\nsuper(0, foo)\n")) {
    throw "Unexpected sequence of events: ${self::events}";
  }
}
