abstract class A1 {
  void extendedClassMember() {}
  void extendedInterfaceMember();
}

abstract class A2 {
  void mixedInClassMember() {}
  void mixedInInterfaceMember();
}

abstract class A3 extends A1 with A2 {
  void declaredClassMember() {}
  void declaredInterfaceMember();
}

abstract class A4 = A1 with A2;

abstract class A5 implements A1 {}

abstract class B1 {
  void extendedAndImplementedMember() {}
  void twiceInterfaceMember() {}
}

abstract class B2 {
  void twiceInterfaceMember() {}
}

abstract class B3 {
  void extendedAndImplementedMember() {}
}

abstract class B4 extends B3 implements B1, B2 {}

abstract class C1 {
  void mixedInAndImplementedClassMember() {}
  void mixedInAndImplementedInterfaceMember();
}

abstract class C3 with C1 implements C2 {}

class A6 extends A1 implements A1 {}

class B5 extends B4 {}

class B6 extends B3 implements B1, B2 {}

class C2 {
  void mixedInAndImplementedClassMember() {}
  void mixedInAndImplementedInterfaceMember() {}
}

class C4 extends C3 {}

class C5 with C1 implements C2 {}

main() {}
