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.{self::A::x}} y: ${this.{self::A::y}}");
    core::print(this);
    core::print(this.{core::Object::runtimeType});
  }
}
class B extends self::A {
  constructor •(dynamic x) → void
    : super self::A::•(x)
    ;
  method method() → dynamic {
    core::print("B.method x: ${this.{self::A::x}} y: ${this.{self::A::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();
}
