library;
//
// Problems in library:
//
// pkg/front_end/testcases/spread_collection_inference.dart:21:62: Error: Unexpected token '...'.
//   var /*@type=List<dynamic>*/ lhs10 = /*@typeArgs=dynamic*/ [...
//                                                              ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:24:48: Error: Unexpected token '...'.
//   var /*@type=Set<dynamic>*/ set10 = <dynamic>{... /*@typeArgs=dynamic*/ []};
//                                                ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:26:66: Error: Unexpected token '...'.
//   var /*@type=Map<dynamic, dynamic>*/ map10 = <dynamic, dynamic>{...
//                                                                  ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:30:37: Error: Unexpected token '...'.
//     /*@typeArgs=dynamic, dynamic*/ {...  /*@typeArgs=dynamic, dynamic*/ {}};
//                                     ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:32:54: Error: Unexpected token '...'.
//   var /*@type=List<int>*/ lhs20 = /*@typeArgs=int*/ [...spread];
//                                                      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:34:53: Error: Unexpected token '...'.
//   var /*@type=Set<int>*/ set20 = /*@typeArgs=int*/ {...spread, 42};
//                                                     ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:36:62: Error: Unexpected token '...'.
//   var /*@type=Set<int>*/ set20ambiguous = /*@typeArgs=int*/ {...spread};
//                                                              ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:39:6: Error: Unexpected token '...'.
//     {...mapSpread, "baz": 42};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:42:6: Error: Unexpected token '...'.
//     {...mapSpread};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:44:62: Error: Unexpected token '...'.
//   var /*@type=List<dynamic>*/ lhs21 = /*@typeArgs=dynamic*/ [...(spread as
//                                                              ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:47:61: Error: Unexpected token '...'.
//   var /*@type=Set<dynamic>*/ set21 = /*@typeArgs=dynamic*/ {...(spread as
//                                                             ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:51:6: Error: Unexpected token '...'.
//     {...(mapSpread as dynamic), "baz": 42};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:53:29: Error: Unexpected token '...'.
//   dynamic map21ambiguous = {...
//                             ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:56:40: Error: Unexpected token '...'.
//   List<int> lhs22 = /*@typeArgs=int*/ [... /*@typeArgs=int*/ []];
//                                        ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:58:39: Error: Unexpected token '...'.
//   Set<int> set22 = /*@typeArgs=int*/ {... /*@typeArgs=int*/ [], 42};
//                                       ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:60:48: Error: Unexpected token '...'.
//   Set<int> set22ambiguous = /*@typeArgs=int*/ {... /*@typeArgs=int*/ []};
//                                                ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:63:6: Error: Unexpected token '...'.
//     {... /*@typeArgs=String, int*/ {}};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:65:52: Error: Unexpected token '...'.
//   List<List<int>> lhs23 = /*@typeArgs=List<int>*/ [... /*@typeArgs=List<int>*/
//                                                    ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:68:51: Error: Unexpected token '...'.
//   Set<List<int>> set23 = /*@typeArgs=List<int>*/ {... /*@typeArgs=List<int>*/
//                                                   ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:72:6: Error: Unexpected token '...'.
//     {... /*@typeArgs=List<int>*/ [/*@typeArgs=int*/ []]};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:75:6: Error: Unexpected token '...'.
//     {... /*@typeArgs=String, List<int>*/ {"baz": /*@typeArgs=int*/ []}};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:77:29: Error: Unexpected token '...'.
//   dynamic map24ambiguous = {...
//                             ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:78:13: Error: Unexpected token '...'.
//     spread, ...mapSpread};
//             ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:80:34: Error: Unexpected token '...'.
//   int lhs30 = /*@typeArgs=int*/ [...spread];
//                                  ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:82:34: Error: Unexpected token '...'.
//   int set30 = /*@typeArgs=int*/ {...spread, 42};
//                                  ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:85:6: Error: Unexpected token '...'.
//     {...spread};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:88:6: Error: Unexpected token '...'.
//     {...mapSpread, "baz": 42};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:91:6: Error: Unexpected token '...'.
//     {...mapSpread};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:93:35: Error: Unexpected token '...'.
//   List<dynamic> lhs40 = <dynamic>[...
//                                   ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:96:34: Error: Unexpected token '...'.
//   Set<dynamic> set40 = <dynamic>{...
//                                  ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:99:52: Error: Unexpected token '...'.
//   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...
//                                                    ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:102:36: Error: Unexpected token '...'.
//   List<dynamic> lhs50 = <dynamic> [...
//                                    ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:105:35: Error: Unexpected token '...'.
//   Set<dynamic> set50 = <dynamic> {...
//                                   ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:108:52: Error: Unexpected token '...'.
//   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...
//                                                    ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:111:33: Error: Unexpected token '...'.
//   List<String> lhs60 = <String>[...
//                                 ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:114:32: Error: Unexpected token '...'.
//   Set<String> set60 = <String>{... spread};
//                                ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:116:36: Error: Unexpected token '...'.
//   Map<int, int> map60 = <int, int>{...
//                                    ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:119:48: Error: Unexpected token '...'.
//   Map<String, String> map61 = <String, String>{...
//                                                ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:122:27: Error: Unexpected token '...'.
//   List<int> lhs70 = <int>[... null];
//                           ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:124:26: Error: Unexpected token '...'.
//   Set<int> set70 = <int>{... null};
//                          ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:127:6: Error: Unexpected token '...'.
//     {... null, ... /*@typeArgs=dynamic*/
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:127:16: Error: Unexpected token '...'.
//     {... null, ... /*@typeArgs=dynamic*/
//                ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:130:42: Error: Unexpected token '...'.
//   Map<String, int> map70 = <String, int>{...
//                                          ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:133:27: Error: Unexpected token '...?'.
//   List<int> lhs80 = <int>[...?null];
//                           ^^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:135:26: Error: Unexpected token '...?'.
//   Set<int> set80 = <int>{...?null};
//                          ^^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:138:6: Error: Unexpected token '...?'.
//     {...?null, ... /*@typeArgs=dynamic*/ []};
//      ^^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:138:16: Error: Unexpected token '...'.
//     {...?null, ... /*@typeArgs=dynamic*/ []};
//                ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:140:42: Error: Unexpected token '...?'.
//   Map<String, int> map80 = <String, int>{...?null};
//                                          ^^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:142:56: Error: Unexpected token '...'.
//   var /*@type=Map<String, int>*/ map90 = <String, int>{... /*@typeArgs=String, int*/ bar()};
//                                                        ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:144:29: Error: Unexpected token '...'.
//   List<int> list100 = <int>[...listNum];
//                             ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:146:37: Error: Unexpected token '...'.
//   Map<num, int> map100 = <num, int>{...mapIntNum};
//                                     ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:148:29: Error: Unexpected token '...'.
//   List<int> list110 = <int>[...dynVar];
//                             ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:150:37: Error: Unexpected token '...'.
//   Map<num, int> map110 = <num, int>{...dynVar};
//                                     ^^^
//
import self as self;
import "dart:core" as core;

static method bar<K extends core::Object = dynamic, V extends core::Object = dynamic>() → core::Map<self::bar::K, self::bar::V>
  return null;
static method foo(dynamic dynVar) → dynamic {
  core::List<core::int> spread = <core::int>[1, 2, 3];
  core::Map<core::String, core::int> mapSpread = <core::String, core::int>{"foo": 4, "bar": 2};
  core::int notSpreadInt = 42;
  () → core::int notSpreadFunction = null;
  core::Map<core::int, core::num> mapIntNum = <core::int, core::num>{42: 42};
  core::List<core::num> listNum = <core::num>[42];
  dynamic lhs10 = <dynamic>[];
  dynamic set10 = <dynamic>{};
  dynamic map10 = <dynamic, dynamic>{};
  dynamic map10ambiguous = <dynamic, dynamic>{};
  dynamic lhs20 = <dynamic>[];
  dynamic set20 = <dynamic>{42};
  dynamic set20ambiguous = <dynamic, dynamic>{};
  dynamic map20 = <dynamic, dynamic>{"baz": 42};
  dynamic map20ambiguous = <dynamic, dynamic>{};
  dynamic lhs21 = <dynamic>[];
  dynamic set21 = <dynamic>{42};
  dynamic map21 = <dynamic, dynamic>{"baz": 42};
  dynamic map21ambiguous = <dynamic, dynamic>{};
  core::List<core::int> lhs22 = <dynamic>[];
  core::Set<core::int> set22 = <dynamic>{42};
  core::Set<core::int> set22ambiguous = <dynamic, dynamic>{};
  core::Map<core::String, core::int> map22 = <dynamic, dynamic>{};
  core::List<core::List<core::int>> lhs23 = <dynamic>[];
  core::Set<core::List<core::int>> set23 = <dynamic>{<core::int>[42]};
  core::Set<core::List<core::int>> set23ambiguous = <dynamic, dynamic>{};
  core::Map<core::String, core::List<core::int>> map23 = <dynamic, dynamic>{};
  dynamic map24ambiguous = <dynamic, dynamic>{};
  core::int lhs30 = <dynamic>[];
  core::int set30 = <dynamic>{42};
  core::int set30ambiguous = <dynamic, dynamic>{};
  core::int map30 = <dynamic, dynamic>{"baz": 42};
  core::int map30ambiguous = <dynamic, dynamic>{};
  core::List<dynamic> lhs40 = <dynamic>[];
  core::Set<dynamic> set40 = <dynamic>{};
  core::Map<dynamic, dynamic> map40 = <dynamic, dynamic>{};
  core::List<dynamic> lhs50 = <dynamic>[];
  core::Set<dynamic> set50 = <dynamic>{};
  core::Map<dynamic, dynamic> map50 = <dynamic, dynamic>{};
  core::List<core::String> lhs60 = <core::String>[];
  core::Set<core::String> set60 = <core::String>{};
  core::Map<core::int, core::int> map60 = <core::int, core::int>{};
  core::Map<core::String, core::String> map61 = <core::String, core::String>{};
  core::List<core::int> lhs70 = <core::int>[];
  core::Set<core::int> set70 = <core::int>{};
  dynamic set71ambiguous = <dynamic, dynamic>{};
  core::Map<core::String, core::int> map70 = <core::String, core::int>{};
  core::List<core::int> lhs80 = <core::int>[];
  core::Set<core::int> set80 = <core::int>{};
  dynamic set81ambiguous = <dynamic, dynamic>{};
  core::Map<core::String, core::int> map80 = <core::String, core::int>{};
  dynamic map90 = <core::String, core::int>{};
  core::List<core::int> list100 = <core::int>[];
  core::Map<core::num, core::int> map100 = <core::num, core::int>{};
  core::List<core::int> list110 = <core::int>[];
  core::Map<core::num, core::int> map110 = <core::num, core::int>{};
}
static method main() → dynamic {}
