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;
  synthetic constructor •() → self::C<self::C::T>
    ;
  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;
  generic-covariant-impl field core::num y;
  synthetic constructor •() → self::D
    ;
}
class E extends core::Object implements self::C<core::num> {
  synthetic constructor •() → self::E
    ;
  set x(generic-covariant-impl core::num t) → void
    ;
  get y() → core::num
    ;
  set y(generic-covariant-impl core::num t) → void
    ;
}
static method main() → void
  ;
