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

class A extends core::Object {
  final field core::int x;
  final field core::int y;
  constructor •(core::int y) → void
    : self::A::y = y, self::A::x = 42, super core::Object::•()
    ;
  method method() → dynamic {
    core::print("A.method x: ${this.x} y: ${this.y}");
    core::print(this);
    core::print(this.runtimeType);
  }
}
class B extends self::A {
  constructor •(dynamic x) → void
    : super self::A::•(x)
    ;
  method method() → dynamic {
    core::print("B.method x: ${this.x} y: ${this.y}");
    super.{self::A::method}();
  }
}
static method main() → dynamic {
  self::A a = new self::A::•(87);
  self::B b = new self::B::•(117);
  a.method();
  b.method();
}
