library;
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 J<X extends core::Object* = dynamic> extends core::Object {
  synthetic constructor •() → self::J<self::J::X*>*
    ;
}
abstract class _M0&I&J<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> = self::I<self::_M0&I&J::X*> with self::J<self::_M0&I&J::Y*> /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_M0&I&J<self::_M0&I&J::X*, self::_M0&I&J::Y*>*
    : super self::I::•()
    ;
}
class M0<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends self::_M0&I&J<self::M0::X*, self::M0::Y*> {
  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
    ;
}
class M1 extends core::Object implements self::I<core::int*> {
  synthetic constructor •() → self::M1*
    ;
}
class M2 extends self::M1 implements self::J<core::double*> {
  synthetic constructor •() → self::M2*
    ;
}
abstract class _A&M2&M0 = self::M2 with self::M0<core::int*, core::double*> /*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
  ;
