library;
//
// Problems in library:
//
// pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart:13:7: Error: Type argument 'Comparable<dynamic>' doesn't conform to the bound 'Comparable<Y>' of the type variable 'Y' on 'M0' in the supertype 'M0' of class 'M1 with M0'.
//  - 'Comparable' is from 'dart:core'.
// Try changing type arguments so that they conform to the bounds.
// class A extends M1 with M0 {}
//       ^
// pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart:7:13: Context: This is the type variable whose bound isn't conformed to.
// class M0<X, Y extends Comparable<Y>> extends I<X> {}
//             ^
//
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<X extends core::Object* = dynamic, Y extends core::Comparable<self::M0::Y*>* = core::Comparable<dynamic>*> extends self::I<self::M0::X*> {
  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
    ;
}
class M1 extends core::Object implements self::I<core::int*> {
  synthetic constructor •() → self::M1*
    ;
}
abstract class _A&M1&M0 = self::M1 with self::M0<core::int*, core::Comparable<dynamic>*> /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_A&M1&M0*
    : super self::M1::•()
    ;
}
class A extends self::_A&M1&M0 {
  synthetic constructor •() → self::A*
    ;
}
static method main() → dynamic
  ;
