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

class A<T extends core::Object = dynamic> extends core::Object {
  generic-covariant-impl field core::List<self::A::T> x = null;
  synthetic constructor •() → self::A<self::A::T>
    : super core::Object::•()
    ;
  set y(generic-covariant-impl core::List<self::A::T> value) → void {}
}
static method test() → dynamic {
  self::A<core::int> a_int = new self::A::•<core::int>();
  self::A<core::Object> a_object = new self::A::•<core::Object>();
  self::A<dynamic> a_dynamic = new self::A::•<dynamic>();
  dynamic x_int = a_int.x = <dynamic>[0];
  dynamic y_int = a_int.y = <dynamic>[0];
  dynamic x_object = a_object.x = <dynamic>[0];
  dynamic y_object = a_object.y = <dynamic>[0];
  dynamic x_dynamic = a_dynamic.x = <dynamic>[0];
  dynamic y_dynamic = a_dynamic.y = <dynamic>[0];
  dynamic x_int_explicit = a_int.x = <core::int>[0];
  dynamic y_int_explicit = a_int.y = <core::int>[0];
  dynamic x_object_explicit = a_object.x = <core::int>[0];
  dynamic y_object_explicit = a_object.y = <core::int>[0];
  dynamic x_dynamic_explicit = a_dynamic.x = <core::int>[0];
  dynamic y_dynamic_explicit = a_dynamic.y = <core::int>[0];
  core::List<core::int> x_int_downward = a_int.x = <dynamic>[0];
  core::List<core::int> y_int_downward = a_int.y = <dynamic>[0];
  core::List<core::int> x_object_downward = a_object.x = <dynamic>[0];
  core::List<core::int> y_object_downward = a_object.y = <dynamic>[0];
  core::List<core::int> x_dynamic_downward = a_dynamic.x = <dynamic>[0];
  core::List<core::int> y_dynamic_downward = a_dynamic.y = <dynamic>[0];
}
static method main() → dynamic {}
