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

abstract class A extends core::Object {
  synthetic constructor •() → self::A
    ;
  abstract get x() → core::int;
}
class B extends self::A {
  final field core::int x;
  constructor •(dynamic x) → self::B
    ;
}
static method main() → dynamic
  ;
