library;
import self as self;
import "dart:core" as core;

class A extends core::Object {
  synthetic constructor •() → self::A*
    ;
  method foo(covariant core::num* x) → void
    ;
}
class B extends core::Object {
  synthetic constructor •() → self::B*
    ;
  method foo(core::num* x) → void
    ;
}
class C extends core::Object {
  synthetic constructor •() → self::C*
    ;
  method foo(core::num* x) → void
    ;
}
abstract class _D&A&B = self::A with self::B /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_D&A&B*
    : super self::A::•()
    ;
  forwarding-stub method foo(covariant core::num* x) → void
    return super.{self::A::foo}(x);
}
class D extends self::_D&A&B implements self::C {
  synthetic constructor •() → self::D*
    ;
  method foo(covariant core::int* x) → void
    ;
}
static method main() → dynamic
  ;
