library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue48167.dart:11: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:13: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::•()
    ;
}
abstract class _C1a&Base&Mixin1a = self::Base with self::Mixin1a /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_C1a&Base&Mixin1a
    : super self::Base::•()
    ;
}
class C1a extends self::_C1a&Base&Mixin1a {
  synthetic constructor •() → self::C1a
    : super self::_C1a&Base&Mixin1a::•()
    ;
}
abstract class _C1b&Base&Mixin1b = self::Base with self::Mixin1b /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_C1b&Base&Mixin1b
    : super self::Base::•()
    ;
}
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&Base&Mixin2a extends core::Object implements self::Base, self::Mixin2a /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_Mixin2b&Base&Mixin2a
    : super core::Object::•()
    ;
}
abstract class Mixin2b extends self::_Mixin2b&Base&Mixin2a /*isMixinDeclaration*/  {
}
abstract class _C2a&Base&Mixin2a = self::Base with self::Mixin2a /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_C2a&Base&Mixin2a
    : super self::Base::•()
    ;
}
class C2a extends self::_C2a&Base&Mixin2a {
  synthetic constructor •() → self::C2a
    : super self::_C2a&Base&Mixin2a::•()
    ;
}
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::•()
    ;
}
class C2b extends self::_C2b&Base&Mixin2a&Mixin2b {
  synthetic constructor •() → self::C2b
    : super self::_C2b&Base&Mixin2a&Mixin2b::•()
    ;
}
