library /*isNonNullableByDefault*/;
import self as self;
import "package:macro/macro.dart" as mac;
import "dart:core" as core;

import "package:macro/macro.dart";

@#C1
class A extends core::Object {
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
  method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ getSuperClass() → core::String {
    return "Object";
  }
}
@#C1
class B extends self::A {
  synthetic constructor •() → self::B
    : super self::A::•()
    ;
  method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ getSuperClass() → core::String {
    return "A";
  }
}
@#C1
class M extends core::Object /*isMixinDeclaration*/  {
  method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ getSuperClass() → core::String {
    return "Object";
  }
}
abstract class _C&A&M = self::A with self::M /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_C&A&M
    : super self::A::•()
    ;
  mixin-super-stub method getSuperClass() → core::String
    return super.{self::M::getSuperClass}();
}
@#C1
class C extends self::_C&A&M {
  synthetic constructor •() → self::C
    : super self::_C&A&M::•()
    ;
  method /* from org-dartlang-augmentation:/a/b/c/main.dart-0 */ getSuperClass() → core::String {
    return "A";
  }
}

constants  {
  #C1 = mac::SupertypesMacro {}
}
