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

class A extends core::Object {
  field self::B<core::int*>* b = null;
  synthetic constructor •() → self::A*
    : super core::Object::•()
    ;
}
class B<T extends core::Object* = dynamic> extends core::Object {
  constructor •(self::B::T* x) → self::B<self::B::T*>*
    : super core::Object::•()
    ;
}
static field self::A* t1 = let final self::A* #t1 = new self::A::•() in let final dynamic #t2 = #t1.{self::A::b} = new self::B::•<core::int*>(1) in #t1;
static field core::List<self::B<core::int*>*>* t2 = <self::B<core::int*>*>[new self::B::•<core::int*>(2)];
static method main() → dynamic {}
