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

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