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

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