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

typedef F<T extends core::Object> = (T) → void;
class B<T extends core::Object> extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  method f(core::int x) → self::B::T {}
}
abstract class I<T extends core::Object> extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  abstract method f(core::Object x) → self::I::T;
}
class C<T extends core::Object> extends self::B<(self::C::T) → void> implements self::I<(self::C::T) → void> {
  synthetic constructor •() → void
    : super self::B::•()
    ;
  abstract forwarding-stub generic-contravariant method f(core::Object x) → (self::C::T) → void;
}
static method main() → void {}
