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

abstract class A<T extends core::Object = dynamic> extends core::Object {
  field core::List<self::A::T> z;
  synthetic constructor •() → self::A<self::A::T>
    ;
  abstract get x() → core::List<self::A::T>;
  abstract set y(core::List<self::A::T> value) → void;
}
class B extends self::A<core::int> {
  field dynamic x;
  field dynamic y;
  field dynamic z;
  synthetic constructor •() → self::B
    ;
}
static method main() → dynamic
  ;
