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

class Mixin extends core::Object {
  field dynamic field = null;
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  method foo() → dynamic
    return 87;
}
abstract class _Object&Mixin = core::Object with self::Mixin {
}
class Foo extends self::_Object&Mixin {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  method foo() → dynamic
    return super.{self::Mixin::foo}();
  method bar() → dynamic
    return super.{self::Mixin::field};
}
static method main() → dynamic {
  self::Foo f = new self::Foo::•();
  f.{self::Mixin::field} = 42;
  core::print(f.{self::Foo::bar}());
}
