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::Object y) → void;
}
abstract 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::Object y) → void
    return super.{self::B::f}(x, y as core::int);
}
static method main() → void
  ;
