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

class A extends core::Object {
  synthetic constructor •() → self::A
    ;
}
class Mixin extends core::Object {
  synthetic constructor •() → self::Mixin
    ;
}
abstract class B<D extends core::Object? = dynamic> extends core::Object {
  final field self::B::D% field;
  constructor •({required self::B::D% field = null}) → self::B<self::B::D%>
    ;
}
abstract class _C&B&Mixin = self::B<self::A> with self::Mixin /*isAnonymousMixin*/  {
  synthetic constructor •({self::A field = null}) → self::_C&B&Mixin
    : super self::B::•(field: field)
    ;
}
class C extends self::_C&B&Mixin {
  constructor •({required self::A field = null}) → self::C
    ;
}
static method main() → dynamic
  ;
