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

class Foo extends core::Object {
  field core::int* bar;
  synthetic constructor •() → self::Foo*
    ;
}
class Bar<T extends core::Iterable<core::String*>* = core::Iterable<core::String*>*> extends core::Object {
  synthetic constructor •() → self::Bar<self::Bar::T*>*
    ;
  method foo(generic-covariant-impl self::Bar::T* t) → void
    ;
}
class Baz<T extends core::Object* = dynamic, E extends core::Iterable<self::Baz::T*>* = core::Iterable<dynamic>*, S extends self::Baz::E* = core::Iterable<dynamic>*> extends core::Object {
  synthetic constructor •() → self::Baz<self::Baz::T*, self::Baz::E*, self::Baz::S*>*
    ;
  method foo(generic-covariant-impl self::Baz::S* t) → void
    ;
}
static method test() → dynamic
  ;
static method main() → dynamic
  ;
