class Super {
  void superDuplicate1() {}
  int get superDuplicate1 => 42;
  int get superDuplicate2 => 42;
  void superDuplicate2() {}
  void extendedDuplicate1() {}
  void extendedDuplicate2() {}
}

class Mixin {
  void mixedInDuplicate1() {}
  void mixedInDuplicate2() {}
}

class Interface {
  void interfaceDuplicate1() {}
  int get interfaceDuplicate1 => 42;
  int get interfaceDuplicate2 => 42;
  void interfaceDuplicate2() {}
  void implementedDuplicate1() {}
  void implementedDuplicate2() {}
}

abstract class Class extends Super with Mixin implements Interface {
  void superDuplicate1() {}
  void superDuplicate2() {}
  void extendedDuplicate1() {}
  int get extendedDuplicate1 => 42;
  int get extendedDuplicate2 => 42;
  void extendedDuplicate2() {}
  void mixedInDuplicate1() {}
  int get mixedInDuplicate1 => 42;
  int get mixedInDuplicate2 => 42;
  void mixedInDuplicate2() {}
  void interfaceDuplicate1() {}
  void interfaceDuplicate2() {}
  void implementedDuplicate1() {}
  int get implementedDuplicate1 => 42;
  int get implementedDuplicate2 => 42;
  void implementedDuplicate2() {}
}

main() {}
