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

class A extends core::Object {
  field dynamic a;
  field dynamic b;
  field dynamic c;
  field dynamic d;
  final field dynamic f;
  synthetic constructor •() → void
    ;
  get e() → dynamic
    ;
  set g(dynamic _) → dynamic
    ;
  get h() → dynamic
    ;
  set h(dynamic _) → dynamic
    ;
  get i() → dynamic
    ;
  operator [](dynamic _) → dynamic
    ;
  operator []=(dynamic a, dynamic b) → dynamic
    ;
  operator ~() → dynamic
    ;
  operator unary-() → dynamic
    ;
  operator ==(dynamic other) → dynamic
    ;
  method m() → void
    ;
}
class B extends self::A {
  final field dynamic d;
  synthetic constructor •() → void
    ;
  get b() → dynamic
    ;
  set c(dynamic x) → dynamic
    ;
  set i(dynamic x) → dynamic
    ;
}
class C extends self::B {
  synthetic constructor •() → void
    ;
  method test() → dynamic
    ;
}
static method use(dynamic x) → dynamic
  ;
static method main() → dynamic
  ;
