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
  ;
