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

class C extends core::Object {
  field dynamic superField;
  synthetic constructor •() → self::C
    ;
  method superMethod() → dynamic
    ;
  get setterOnly() → dynamic
    ;
  set setterOnly(dynamic _) → void
    ;
  get getterOnly() → dynamic
    ;
  set getterOnly(dynamic _) → void
    ;
}
class D extends self::C {
  field dynamic field;
  synthetic constructor •() → self::D
    ;
  set setterOnly(dynamic _) → void
    ;
  get getterOnly() → dynamic
    ;
  method method() → dynamic
    ;
  method test() → void
    ;
}
class E extends self::D {
  field dynamic missingField;
  synthetic constructor •() → self::E
    ;
  method missingMethod() → void
    ;
}
static method main() → dynamic
  ;
