library test;
import self as self;
import "dart:core" as core;

class B extends core::Object {
  synthetic constructor •() → self::B
    ;
  method f(core::int x) → void
    ;
}
abstract class I<T extends core::Object = dynamic> extends core::Object {
  synthetic constructor •() → self::I<self::I::T>
    ;
  abstract method f(generic-covariant-impl self::I::T x) → void;
}
class M extends core::Object {
  synthetic constructor •() → self::M
    ;
  method f(core::int x) → void
    ;
}
class C = self::B with self::M implements self::I<core::int> {
  synthetic constructor •() → self::C
    : super self::B::•()
    ;
}
static method g1(self::C c) → void
  ;
static method g2(self::I<core::num> i) → void
  ;
static method test() → void
  ;
static method main() → void
  ;
