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

abstract class C<T extends core::Object* = dynamic> extends core::Object {
  static field dynamic _redirecting# = <dynamic>[self::C::•];
  abstract get t() → self::C::T*;
  abstract set t(generic-covariant-impl self::C::T* x) → void;
  static factory •<T extends core::Object* = dynamic>(self::C::•::T* t) → self::C<self::C::•::T*>*
    let<BottomType> #redirecting_factory = self::CImpl::• in let self::C::•::T* #typeArg0 = null in invalid-expression;
}
class CImpl<T extends core::Object* = dynamic> extends core::Object implements self::C<self::CImpl::T*> {
  generic-covariant-impl field self::CImpl::T* t;
  constructor •(self::CImpl::T* t) → self::CImpl<self::CImpl::T*>*
    : self::CImpl::t = t, super core::Object::•()
    ;
}
static method main() → dynamic {
  self::C<core::int*>* x = new self::CImpl::•<core::int*>(42);
}
