library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue48167.dart:13:29: Error: The class 'Mixin1a' can't be used as a mixin because it extends a class other than 'Object'.
// class C1a extends Base with Mixin1a {}
//                             ^
//
// pkg/front_end/testcases/general/issue48167.dart:15:29: Error: The class 'Mixin1b' can't be used as a mixin because it extends a class other than 'Object'.
// class C1b extends Base with Mixin1b {}
//                             ^
//
import self as self;
import "dart:core" as core;

class Base extends core::Object {
  synthetic constructor •() → self::Base
    : super core::Object::•()
    ;
}
class Mixin1a extends self::Base {
  synthetic constructor •() → self::Mixin1a
    : super self::Base::•()
    ;
}
class Mixin1b extends self::Mixin1a {
  synthetic constructor •() → self::Mixin1b
    : super self::Mixin1a::•()
    ;
}
class C1a extends self::_C1a&Base&Mixin1a {
  synthetic constructor •() → self::C1a
    : super self::_C1a&Base&Mixin1a::•()
    ;
}
class C1b extends self::_C1b&Base&Mixin1b {
  synthetic constructor •() → self::C1b
    : super self::_C1b&Base&Mixin1b::•()
    ;
}
abstract class Mixin2a extends self::Base /*isMixinDeclaration*/  {
}
abstract class Mixin2b extends self::_Mixin2b&Base&Mixin2a /*isMixinDeclaration*/  {
}
class C2a extends self::_C2a&Base&Mixin2a {
  synthetic constructor •() → self::C2a
    : super self::_C2a&Base&Mixin2a::•()
    ;
}
class C2b extends self::_C2b&Base&Mixin2a&Mixin2b {
  synthetic constructor •() → self::C2b
    : super self::_C2b&Base&Mixin2a&Mixin2b::•()
    ;
}
abstract class _C1a&Base&Mixin1a = self::Base with self::Mixin1a /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_C1a&Base&Mixin1a
    : super self::Base::•()
    ;
}
abstract class _C1b&Base&Mixin1b = self::Base with self::Mixin1b /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_C1b&Base&Mixin1b
    : super self::Base::•()
    ;
}
abstract class _Mixin2b&Base&Mixin2a extends core::Object implements self::Base, self::Mixin2a /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_Mixin2b&Base&Mixin2a
    : super core::Object::•()
    ;
}
abstract class _C2a&Base&Mixin2a = self::Base with self::Mixin2a /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_C2a&Base&Mixin2a
    : super self::Base::•()
    ;
}
abstract class _C2b&Base&Mixin2a = self::Base with self::Mixin2a /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_C2b&Base&Mixin2a
    : super self::Base::•()
    ;
}
abstract class _C2b&Base&Mixin2a&Mixin2b = self::_C2b&Base&Mixin2a with self::Mixin2b /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_C2b&Base&Mixin2a&Mixin2b
    : super self::_C2b&Base&Mixin2a::•()
    ;
}
