// @dart = 2.9
class A {
  final f;
  get e => null;
  get h => null;
  get i => null;
  operator -() => 117;
  operator ==(other) => true;
  operator [](_) => null;
  operator []=(a, b) {}
  operator ~() => 117;
  set g(_) {}
  set h(_) {}
  set n(_) {}
  var a;
  var b;
  var c;
  var d;
  void m() {}
  void n() {}
}

class B extends A {
  final d;
  get b => null;
  set c(x) {}
  set i(x) {}
}

class C extends B {
  test() {}
}

main() {}
use(x) {}
