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

abstract class A extends core::Object {
  synthetic constructor •() → self::A*
    ;
  abstract set x(covariant core::Object* value) → void;
}
class B extends core::Object implements self::A {
  covariant field core::Object* x;
  synthetic constructor •() → self::B*
    ;
  method f(covariant core::Object* x) → void
    ;
}
class C<T extends core::Object* = dynamic> extends core::Object implements self::B {
  covariant generic-covariant-impl field self::C::T* x;
  synthetic constructor •() → self::C<self::C::T*>*
    ;
  method f(covariant generic-covariant-impl self::C::T* x) → void
    ;
}
static method main() → dynamic
  ;
