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::num;
}
abstract class B extends self::A {
  synthetic constructor •() → self::B
    ;
  abstract set x(core::int value) → void;
}
class C extends self::B {
  field core::num x;
  synthetic constructor •() → self::C
    ;
}
static method main() → dynamic
  ;
