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

class C<T extends core::Object* = dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::T*>*
    : super core::Object::•()
    ;
  method f1(generic-covariant-impl self::C::T* x) → void {}
  method f2(core::int* x) → void {}
}
class D extends self::C<core::num*> {
  synthetic constructor •() → self::D*
    : super self::C::•()
    ;
  method f1(covariant generic-covariant-impl core::int* x) → void {}
}
static method g1(dynamic d) → void {
  d.f1(1.5);
}
static method g2(dynamic d) → void {
  d.f2(1.5);
}
static method test() → void {
  self::g1(new self::C::•<core::int*>());
  self::g2(new self::C::•<dynamic>());
  self::g1(new self::D::•());
}
static method main() → dynamic {}
