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 •() → void
    : super core::Object::•()
    ;
}
class B<T extends core::Object> extends core::Object {
  constructor •(self::B::T x) → void
    : super core::Object::•()
    ;
}
static field self::A t1 = let final self::A #t1 = new self::A::•() in let final self::B<core::int> #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 {}
