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

typedef Function2<contravariant S extends core::Object* = dynamic, T extends core::Object* = dynamic> = ([S*]) →* T*;
class Foo extends core::Object {
  field core::List<core::int*>* x;
  constructor •([core::List<core::int*>* x]) → self::Foo*
    ;
  constructor named([core::List<core::int*>* x]) → self::Foo*
    ;
}
static field ([core::List<core::int*>*]) →* core::String* g;
static method f([core::List<core::int*>* l]) → void
  ;
static method main() → dynamic
  ;
