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

class C<T extends core::Object = dynamic> extends core::Object {
  field self::C::T y;
  synthetic constructor •() → self::C<self::C::T>
    ;
  set x(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
  ;
