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

import "dart:async";

static method make(core::int x) → asy::Future<core::int>
  return asy::Future::•<dynamic>(() → dynamic => x);
static method test() → dynamic {
  core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].map(self::make);
  asy::Future<core::List<core::int>> results = asy::Future::wait<dynamic>(list);
  asy::Future<core::String> results2 = results.then((core::List<core::int> list) → dynamic => list.fold("", (dynamic x, dynamic y) → dynamic => x.+(y.toString())));
  asy::Future<core::String> results3 = results.then((core::List<core::int> list) → dynamic => list.fold("", (core::String x, dynamic y) → dynamic => x.+(y.toString())));
  asy::Future<core::String> results4 = results.then((core::List<core::int> list) → dynamic => list.fold<core::String>("", (dynamic x, dynamic y) → dynamic => x.+(y.toString())));
}
static method main() → dynamic {}
