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

class X extends core::Object {
  synthetic constructor •() → self::X
    : super core::Object::•()
    ;
}
class Foo<T extends self::X = dynamic> extends core::Object {
  generic-covariant-impl field self::Foo::T x;
  constructor fromX(self::X _init) → self::Foo<self::Foo::T>
    : this self::Foo::_internal(x: _init)
    ;
  constructor fromT(self::Foo::T _init) → self::Foo<self::Foo::T>
    : this self::Foo::_internal(x: _init)
    ;
  constructor _internal({self::Foo::T x = null}) → self::Foo<self::Foo::T>
    : self::Foo::x = x, super core::Object::•()
    ;
}
static method main() → void {}
