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

class Base extends core::Object {
  synthetic constructor •() → self::Base
    : super core::Object::•()
    ;
}
class Mixin extends core::Object {
  synthetic constructor •() → self::Mixin
    : super core::Object::•()
    ;
  method foo() → dynamic
    return core::print("foo");
}
abstract class _Sub&Base&Mixin extends self::Base implements self::Mixin {
  synthetic constructor •() → self::_Sub&Base&Mixin
    : super self::Base::•()
    ;
  method foo() → dynamic
    return core::print("foo");
}
class Sub extends self::_Sub&Base&Mixin {
  synthetic constructor •() → self::Sub
    : super self::_Sub&Base&Mixin::•()
    ;
}
static method main() → dynamic {
  new self::Sub::•().{self::Mixin::foo}();
}
