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

class B<T extends core::Object* = dynamic> extends core::Object {
  synthetic constructor •() → self::B<self::B::T*>*
    ;
  method f(generic-covariant-impl self::B::T* x, core::int* y) → void
    ;
}
abstract class I extends core::Object {
  synthetic constructor •() → self::I*
    ;
  abstract method f(core::int* x, core::Object* y) → void;
}
abstract class C extends self::B<core::int*> implements self::I {
  synthetic constructor •() → self::C*
    ;
  abstract forwarding-stub method f(generic-covariant-impl core::int* x, core::Object* y) → void;
}
static method main() → void
  ;
