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

typedef F<contravariant U extends core::Object? = dynamic, V extends core::Object? = dynamic> = (U%) → V%;
class Foo<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::Foo<self::Foo::T%>
    ;
  get v1() → self::Bar<self::Foo::T%>
    ;
  get v2() → self::Bar<core::List<self::Foo::T%>>
    ;
  get v3() → self::Bar<(self::Foo::T%) → self::Foo::T%>
    ;
  get v4() → self::Bar<((self::Foo::T%) → self::Foo::T%) → self::Foo::T%>
    ;
  get v5() → core::List<self::Foo::T%>
    ;
  get v6() → core::List<(self::Foo::T%) → self::Foo::T%>
    ;
  get v7() → core::Map<self::Foo::T%, self::Foo::T%>
    ;
  get v8() → core::Map<(self::Foo::T%) → self::Foo::T%, self::Foo::T%>
    ;
  get v9() → core::Map<self::Foo::T%, (self::Foo::T%) → self::Foo::T%>
    ;
}
class Bar<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
  const constructor •() → self::Bar<self::Bar::T%>
    : super core::Object::•()
    ;
}
static method main() → dynamic
  ;
