library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

abstract class SuperClass1 extends core::Object {
  final field core::String value;
  constructor •(core::String value) → self::SuperClass1
    ;
}
abstract class SuperClass2 extends core::Object {
  final field core::String value;
  constructor •(core::String i) → self::SuperClass2
    ;
}
class Mixin extends core::Object {
  synthetic constructor •() → self::Mixin
    ;
}
class NamedMixin1 = self::SuperClass1 with self::Mixin {
  synthetic constructor •(core::String value) → self::NamedMixin1
    : super self::SuperClass1::•(value)
    ;
}
class NamedMixin2 = self::SuperClass2 with self::Mixin {
  synthetic constructor •(core::String i) → self::NamedMixin2
    : super self::SuperClass2::•(i)
    ;
}
static method main() → void
  ;
static method errors() → dynamic
  ;
