library;
//
// Problems in library:
//
// pkg/front_end/testcases/rasta/super.dart:27:7: Error: 'n' is already declared in this scope.
//   set n(_) {}
//       ^
// pkg/front_end/testcases/rasta/super.dart:26:8: Context: Previous declaration of 'n'.
//   void n() {}
//        ^
//
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 •() → self::A
    ;
  get e() → dynamic
    ;
  set g(dynamic _) → void
    ;
  get h() → dynamic
    ;
  set h(dynamic _) → void
    ;
  get i() → dynamic
    ;
  operator [](dynamic _) → dynamic
    ;
  operator []=(dynamic a, dynamic b) → void
    ;
  operator ~() → dynamic
    ;
  operator unary-() → dynamic
    ;
  operator ==(dynamic other) → core::bool
    ;
  method m() → void
    ;
  method n() → void
    ;
  set n(dynamic _) → void
    ;
}
class B extends self::A {
  final field dynamic d;
  synthetic constructor •() → self::B
    ;
  get b() → dynamic
    ;
  set c(dynamic x) → void
    ;
  set i(dynamic x) → void
    ;
}
class C extends self::B {
  synthetic constructor •() → self::C
    ;
  method test() → dynamic
    ;
}
static method use(dynamic x) → dynamic
  ;
static method main() → dynamic
  ;
