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

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