library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart:14:30: Error: The class 'M0' can't be used as a mixin because it extends a class other than 'Object'.
// class A extends M2<int> with M0 {}
//                              ^
//
import self as self;
import "dart:core" as core;

class I<X extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::I<self::I::X%>
    ;
}
class M0<T extends core::Object? = dynamic> extends self::I<core::List<self::M0::T%>> {
  synthetic constructor •() → self::M0<self::M0::T%>
    ;
}
class M1<T extends core::Object? = dynamic> extends self::I<core::List<self::M1::T%>> {
  synthetic constructor •() → self::M1<self::M1::T%>
    ;
}
class M2<T extends core::Object? = dynamic> extends self::M1<core::Map<self::M2::T%, self::M2::T%>> {
  synthetic constructor •() → self::M2<self::M2::T%>
    ;
}
abstract class _A&M2&M0 = self::M2<core::int> with self::M0<core::Map<core::int, core::int>> /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_A&M2&M0
    : super self::M2::•()
    ;
}
class A extends self::_A&M2&M0 {
  synthetic constructor •() → self::A
    ;
}
static method main() → dynamic
  ;
