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

typedef Function2<S extends core::Object = dynamic, T extends core::Object = dynamic> = (S) → T;
class A<T extends core::Object = dynamic> extends core::Object {
  generic-covariant-impl field (self::A::T) → self::A::T x;
  constructor •((self::A::T) → self::A::T x) → void
    : self::A::x = x, super core::Object::•()
    ;
}
static method main() → void {
  {
    core::String x = "hello";
    core::int y = 3;
    function f(core::List<core::Map<core::int, core::String>> l) → void {}
    ;
    f.call(<core::Map<core::int, core::String>>[<core::int, core::String>{y: x}]);
  }
  {
    function f(core::int x) → core::int
      return 0;
    self::A<core::int> a = new self::A::•<core::int>(f);
  }
}
