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

class C<T extends core::Object* = dynamic> extends core::Object {
  generic-covariant-impl field self::C::T* t = null;
  constructor •() → self::C<self::C::T*>*
    : super core::Object::•()
    ;
  static factory named<T extends core::Object* = dynamic>(self::C::named::T* t) → self::C<self::C::named::T*>* {
    self::C<self::C::named::T*>* x = new self::C::•<self::C::named::T*>();
    x.{self::C::t} = t;
    return x;
  }
}
static method main() → dynamic {
  self::C<core::int*>* x = self::C::named<core::int*>(42);
}
