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 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 {}
