library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:22:5: Error: Unexpected token '...'.
//     ...
//     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:27:5: Error: Unexpected token '...'.
//     ... /*@ typeArgs=dynamic */ []
//     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:31:5: Error: Unexpected token '...'.
//     ...
//     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:37:5: Error: Unexpected token '...'.
//     ... /*@ typeArgs=dynamic, dynamic */ {}
//     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:40:61: Error: Unexpected token '...'.
//   var /*@ type=List<int*>* */ lhs20 = /*@ typeArgs=int* */ [...spread];
//                                                             ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:42:60: Error: Unexpected token '...'.
//   var /*@ type=Set<int*>* */ set20 = /*@ typeArgs=int* */ {...spread, 42};
//                                                            ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:44:69: Error: Unexpected token '...'.
//   var /*@ type=Set<int*>* */ set20ambiguous = /*@ typeArgs=int* */ {...spread};
//                                                                     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:47:8: Error: Unexpected token '...'.
//       {...mapSpread, "baz": 42};
//        ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:50:8: Error: Unexpected token '...'.
//       {...mapSpread};
//        ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:53:5: Error: Unexpected token '...'.
//     ...(spread as dynamic)
//     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:57:5: Error: Unexpected token '...'.
//     ...(spread as dynamic),
//     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:62:8: Error: Unexpected token '...'.
//       {...(mapSpread as dynamic), "baz": 42};
//        ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:64:29: Error: Unexpected token '...'.
//   dynamic map21ambiguous = {...(mapSpread as dynamic)};
//                             ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:66:43: Error: Unexpected token '...'.
//   List<int> lhs22 = /*@ typeArgs=int* */ [... /*@ typeArgs=int* */ []];
//                                           ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:68:42: Error: Unexpected token '...'.
//   Set<int> set22 = /*@ typeArgs=int* */ {... /*@ typeArgs=int* */ [], 42};
//                                          ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:70:51: Error: Unexpected token '...'.
//   Set<int> set22ambiguous = /*@ typeArgs=int* */ {... /*@ typeArgs=int* */ []};
//                                                   ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:73:8: Error: Unexpected token '...'.
//       {... /*@ typeArgs=String*, int* */ {}};
//        ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:76:5: Error: Unexpected token '...'.
//     ... /*@ typeArgs=List<int*>* */
//     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:81:5: Error: Unexpected token '...'.
//     ... /*@ typeArgs=List<int*>* */
//     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:88:5: Error: Unexpected token '...'.
//     ... /*@ typeArgs=List<int*>* */ [/*@ typeArgs=int* */ []]
//     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:93:5: Error: Unexpected token '...'.
//     ... /*@ typeArgs=String*, List<int*>* */ {"baz": /*@ typeArgs=int* */ [] }
//     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:96:29: Error: Unexpected token '...'.
//   dynamic map24ambiguous = {...spread, ...mapSpread};
//                             ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:96:40: Error: Unexpected token '...'.
//   dynamic map24ambiguous = {...spread, ...mapSpread};
//                                        ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:98:37: Error: Unexpected token '...'.
//   int lhs30 = /*@ typeArgs=int* */ [...spread];
//                                     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:100:37: Error: Unexpected token '...'.
//   int set30 = /*@ typeArgs=int* */ {...spread, 42};
//                                     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:103:8: Error: Unexpected token '...'.
//       {...spread};
//        ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:106:8: Error: Unexpected token '...'.
//       {...mapSpread, "baz": 42};
//        ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:109:8: Error: Unexpected token '...'.
//       {...mapSpread};
//        ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:111:35: Error: Unexpected token '...'.
//   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
//                                   ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:113:34: Error: Unexpected token '...'.
//   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
//                                  ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:115:52: Error: Unexpected token '...'.
//   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
//                                                    ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:117:35: Error: Unexpected token '...'.
//   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
//                                   ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:119:34: Error: Unexpected token '...'.
//   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
//                                  ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:121:52: Error: Unexpected token '...'.
//   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
//                                                    ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:123:33: Error: Unexpected token '...'.
//   List<String> lhs60 = <String>[...spread];
//                                 ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:125:32: Error: Unexpected token '...'.
//   Set<String> set60 = <String>{...spread};
//                                ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:127:36: Error: Unexpected token '...'.
//   Map<int, int> map60 = <int, int>{...mapSpread};
//                                    ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:129:48: Error: Unexpected token '...'.
//   Map<String, String> map61 = <String, String>{...mapSpread};
//                                                ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:131:27: Error: Unexpected token '...'.
//   List<int> lhs70 = <int>[...null];
//                           ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:133:26: Error: Unexpected token '...'.
//   Set<int> set70 = <int>{...null};
//                          ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:137:5: Error: Unexpected token '...'.
//     ...null,
//     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:138:5: Error: Unexpected token '...'.
//     ... /*@ typeArgs=dynamic */
//     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:142:42: Error: Unexpected token '...'.
//   Map<String, int> map70 = <String, int>{...null};
//                                          ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:144:27: Error: Unexpected token '...?'.
//   List<int> lhs80 = <int>[...?null];
//                           ^^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:146:26: Error: Unexpected token '...?'.
//   Set<int> set80 = <int>{...?null};
//                          ^^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:149:8: Error: Unexpected token '...?'.
//       {...?null, ... /*@ typeArgs=dynamic */ []};
//        ^^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:149:18: Error: Unexpected token '...'.
//       {...?null, ... /*@ typeArgs=dynamic */ []};
//                  ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:151:42: Error: Unexpected token '...?'.
//   Map<String, int> map80 = <String, int>{...?null};
//                                          ^^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:154:5: Error: Unexpected token '...'.
//     ... /*@ typeArgs=String*, int* */ bar()
//     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:157:29: Error: Unexpected token '...'.
//   List<int> list100 = <int>[...listNum];
//                             ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:159:37: Error: Unexpected token '...'.
//   Map<num, int> map100 = <num, int>{...mapIntNum};
//                                     ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:161:29: Error: Unexpected token '...'.
//   List<int> list110 = <int>[...dynVar];
//                             ^^^
//
// pkg/front_end/testcases/general/spread_collection_inference.dart:163: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 {}
