library;
//
// Problems in library:
//
// pkg/front_end/testcases/spread_collection.dart:6:26: Error: Unexpected token '...'.
//   final aList = <int>[1, ...[2], ...?[3]];
//                          ^^^
//
// pkg/front_end/testcases/spread_collection.dart:6:34: Error: Unexpected token '...?'.
//   final aList = <int>[1, ...[2], ...?[3]];
//                                  ^^^^
//
// pkg/front_end/testcases/spread_collection.dart:7:33: Error: Unexpected token '...'.
//   final aMap = <int, int>{1: 1, ...{2: 2}, ...?{3: 3}};
//                                 ^^^
//
// pkg/front_end/testcases/spread_collection.dart:7:44: Error: Unexpected token '...?'.
//   final aMap = <int, int>{1: 1, ...{2: 2}, ...?{3: 3}};
//                                            ^^^^
//
// pkg/front_end/testcases/spread_collection.dart:8:25: Error: Unexpected token '...'.
//   final aSet = <int>{1, ...[2], ...?[3]};
//                         ^^^
//
// pkg/front_end/testcases/spread_collection.dart:8:33: Error: Unexpected token '...?'.
//   final aSet = <int>{1, ...[2], ...?[3]};
//                                 ^^^^
//
// pkg/front_end/testcases/spread_collection.dart:9:22: Error: Unexpected token '...'.
//   final aSetOrMap = {...foo()};
//                      ^^^
//
import self as self;
import "dart:core" as core;

static method main() → dynamic {
  final dynamic aList = <core::int>[1];
  final dynamic aMap = <core::int, core::int>{1: 1};
  final dynamic aSet = <core::int>{1};
  final dynamic aSetOrMap = <dynamic, dynamic>{};
  core::print(aList);
  core::print(aSet);
  core::print(aMap);
}
static method foo() → dynamic
  return null;
