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 {
  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 {
  {
    dynamic x = "hello";
    dynamic y = 3;
    function f(core::List<core::Map<core::int, core::String>> l) → void {}
    ;
    f.call(<dynamic>[<dynamic, dynamic>{y: x}]);
  }
  {
    function f(core::int x) → core::int
      return 0;
    self::A<core::int> a = new self::A::•<dynamic>(f);
  }
}
