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

class X extends core::Object {
  synthetic constructor •() → self::X*
    ;
}
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*>*
    ;
  constructor fromT(self::Foo::T* _init) → self::Foo<self::Foo::T*>*
    ;
  constructor _internal({self::Foo::T* x}) → self::Foo<self::Foo::T*>*
    ;
}
static method main() → void
  ;
