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

class C<T extends core::Object* = dynamic> extends core::Object {
  generic-covariant-impl field self::C::T* y = null;
  synthetic constructor •() → self::C<self::C::T*>*
    : super core::Object::•()
    ;
  set x(generic-covariant-impl self::C::T* t) → void {}
}
class D extends core::Object implements self::C<core::num*> {
  generic-covariant-impl field core::num* x = null;
  generic-covariant-impl field core::num* y = null;
  synthetic constructor •() → self::D*
    : super core::Object::•()
    ;
}
class E extends core::Object implements self::C<core::num*> {
  synthetic constructor •() → self::E*
    : super core::Object::•()
    ;
  set x(generic-covariant-impl core::num* t) → void {}
  get y() → core::num*
    return null;
  set y(generic-covariant-impl core::num* t) → void {}
}
static method main() → void {}
