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