library /*isNonNullableByDefault*/;
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}{core::int}} y: ${this.{self::A::y}{core::int}}");
    core::print(this);
    core::print(this.{core::Object::runtimeType}{core::Type});
  }
}
class B extends self::A {
  constructor •(dynamic x) → self::B
    : super self::A::•(x as{TypeError,ForDynamic,ForNonNullableByDefault} core::int)
    ;
  method method() → dynamic {
    core::print("B.method x: ${this.{self::A::x}{core::int}} y: ${this.{self::A::y}{core::int}}");
    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}(){() → dynamic};
  b.{self::B::method}(){() → dynamic};
}
