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