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 Foo extends core::Object {
  field core::List<core::int*>* x;
  constructor •([core::List<core::int*>* x = #C2]) → self::Foo*
    : self::Foo::x = x, super core::Object::•()
    ;
  constructor named([core::List<core::int*>* x = #C2]) → self::Foo*
    : self::Foo::x = null, super core::Object::•()
    ;
}
static field ([core::List<core::int*>*]) →* core::String* g = ([core::List<core::int*>* llll = #C2]) → core::String* => "hello";
static method f([core::List<core::int*>* l = #C2]) → void {}
static method main() → dynamic {}

constants  {
  #C1 = 1
  #C2 = <core::int*>[#C1]
}
