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