library /*isNonNullableByDefault*/;
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%>
    ;
}
abstract class M0<X extends core::Object? = dynamic, Y extends core::String> extends self::I<self::M0::X%> /*isMixinDeclaration*/  {
}
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::String> /*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
  ;
