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 "null";
  }
}
@#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 "null";
  }
}
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 {}
}
