// Formatted problems:
//
// pkg/front_end/testcases/regress/issue_34563.dart:9:10: Error: Expected 'on' instead of this.
// mixin M2 extend M1 {}
//          ^^^^^^
//
// pkg/front_end/testcases/regress/issue_34563.dart:11:10: Error: Expected 'on' instead of this.
// mixin M3 extends M1 {}
//          ^^^^^^^
//
// pkg/front_end/testcases/regress/issue_34563.dart:17:10: Error: Expected 'extends' instead of this.
// class C2 extend C1 with M2 {}
//          ^^^^^^
//
// pkg/front_end/testcases/regress/issue_34563.dart:19:10: Error: Expected 'extends' instead of this.
// class C3 on C1 with M3 {}
//          ^^

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

abstract class M1 extends core::Object {
  get m() → core::int
    ;
}
abstract class M2 extends core::Object {
}
abstract class M3 extends core::Object {
}
class C1 extends core::Object {
  synthetic constructor •() → self::C1
    ;
  get c() → core::int
    ;
}
class C2 extends core::Object {
  synthetic constructor •() → self::C2
    ;
}
class C3 extends core::Object {
  synthetic constructor •() → self::C3
    ;
}
static method main() → dynamic
  ;
