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

abstract class A<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::A<self::A::T%>
    ;
  abstract method foo(covariant-by-class self::A::T% x) → dynamic;
}
abstract class B<T extends core::Object? = dynamic> extends core::Object implements self::A<self::B::T%> {
  synthetic constructor •() → self::B<self::B::T%>
    ;
}
class C extends core::Object {
  synthetic constructor •() → self::C
    ;
  method foo(core::num x) → dynamic
    ;
}
abstract class _D&C&B<T extends core::num> = self::C with self::B<self::_D&C&B::T> /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_D&C&B<self::_D&C&B::T>
    : super self::C::•()
    ;
  forwarding-stub method foo(covariant-by-class core::num x) → dynamic
    return super.{self::C::foo}(x);
}
class D<T extends core::num> extends self::_D&C&B<self::D::T> {
  synthetic constructor •() → self::D<self::D::T>
    ;
}
class E<T extends core::num> = self::C with self::B<self::E::T> {
  synthetic constructor •() → self::E<self::E::T>
    : super self::C::•()
    ;
  forwarding-stub method foo(covariant-by-class core::num x) → dynamic
    return super.{self::C::foo}(x);
}
static method main() → dynamic
  ;
