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

class Super extends core::Object {
  constructor _() → self::Super*
    ;
}
class Sub extends self::Super {
  constructor •() → self::Sub*
    ;
  constructor foo() → self::Sub*
    ;
}
class Bad extends core::Object {
  constructor foo() → self::Bad*
    ;
  constructor bar() → self::Bad*
    ;
}
class M extends core::Object {
  synthetic constructor •() → self::M*
    ;
}
abstract class _MixinApplication&Super&M = self::Super with self::M /*isAnonymousMixin*/  {
  synthetic constructor _() → self::_MixinApplication&Super&M*
    : super self::Super::_()
    ;
}
class MixinApplication extends self::_MixinApplication&Super&M {
  constructor •() → self::MixinApplication*
    ;
  constructor foo() → self::MixinApplication*
    ;
}
static method main() → dynamic
  ;
