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

import "dart:async";

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