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) → self::A*
    : 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) → self::B*
    : super self::A::•(x as{TypeError} core::int*)
    ;
  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.{self::A::method}();
  b.{self::B::method}();
}
