library;
//
// Problems in library:
//
// pkg/front_end/testcases/spread_collection_inference.dart:16:62: Error: Unexpected token '...'.
//   var /*@type=List<dynamic>*/ lhs10 = /*@typeArgs=dynamic*/ [...
//                                                              ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:19:48: Error: Unexpected token '...'.
//   var /*@type=Set<dynamic>*/ set10 = <dynamic>{... /*@typeArgs=dynamic*/ []};
//                                                ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:21:66: Error: Unexpected token '...'.
//   var /*@type=Map<dynamic, dynamic>*/ map10 = <dynamic, dynamic>{...
//                                                                  ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:25:37: Error: Unexpected token '...'.
//     /*@typeArgs=dynamic, dynamic*/ {...  /*@typeArgs=dynamic, dynamic*/ {}};
//                                     ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:27:54: Error: Unexpected token '...'.
//   var /*@type=List<int>*/ lhs20 = /*@typeArgs=int*/ [...spread];
//                                                      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:29:53: Error: Unexpected token '...'.
//   var /*@type=Set<int>*/ set20 = /*@typeArgs=int*/ {...spread, 42};
//                                                     ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:31:62: Error: Unexpected token '...'.
//   var /*@type=Set<int>*/ set20ambiguous = /*@typeArgs=int*/ {...spread};
//                                                              ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:34:6: Error: Unexpected token '...'.
//     {...mapSpread, "baz": 42};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:37:6: Error: Unexpected token '...'.
//     {...mapSpread};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:39:62: Error: Unexpected token '...'.
//   var /*@type=List<dynamic>*/ lhs21 = /*@typeArgs=dynamic*/ [...(spread as
//                                                              ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:42:61: Error: Unexpected token '...'.
//   var /*@type=Set<dynamic>*/ set21 = /*@typeArgs=dynamic*/ {...(spread as
//                                                             ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:46:6: Error: Unexpected token '...'.
//     {...(mapSpread as dynamic), "baz": 42};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:48:77: Error: Unexpected token '...'.
//   dynamic map21ambiguous = /*@error=CantDisambiguateNotEnoughInformation*/ {...
//                                                                             ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:51:40: Error: Unexpected token '...'.
//   List<int> lhs22 = /*@typeArgs=int*/ [... /*@typeArgs=int*/ []];
//                                        ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:53:39: Error: Unexpected token '...'.
//   Set<int> set22 = /*@typeArgs=int*/ {... /*@typeArgs=int*/ [], 42};
//                                       ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:55:48: Error: Unexpected token '...'.
//   Set<int> set22ambiguous = /*@typeArgs=int*/ {... /*@typeArgs=int*/ []};
//                                                ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:58:6: Error: Unexpected token '...'.
//     {... /*@typeArgs=String, int*/ {}};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:60:52: Error: Unexpected token '...'.
//   List<List<int>> lhs23 = /*@typeArgs=List<int>*/ [... /*@typeArgs=List<int>*/
//                                                    ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:63:51: Error: Unexpected token '...'.
//   Set<List<int>> set23 = /*@typeArgs=List<int>*/ {... /*@typeArgs=List<int>*/
//                                                   ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:67:6: Error: Unexpected token '...'.
//     {... /*@typeArgs=List<int>*/ [/*@typeArgs=int*/ []]};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:70:6: Error: Unexpected token '...'.
//     {... /*@typeArgs=String, List<int>*/ {"baz": /*@typeArgs=int*/ []}};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:72:77: Error: Unexpected token '...'.
//   dynamic map24ambiguous = /*@error=CantDisambiguateAmbiguousInformation*/ {...
//                                                                             ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:73:13: Error: Unexpected token '...'.
//     spread, ...mapSpread};
//             ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:75:63: Error: Unexpected token '...'.
//   int lhs30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ [...spread];
//                                                               ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:77:63: Error: Unexpected token '...'.
//   int set30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ {...spread, 42};
//                                                               ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:80:6: Error: Unexpected token '...'.
//     {...spread};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:83:6: Error: Unexpected token '...'.
//     {...mapSpread, "baz": 42};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:86:6: Error: Unexpected token '...'.
//     {...mapSpread};
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:88:35: Error: Unexpected token '...'.
//   List<dynamic> lhs40 = <dynamic>[... /*@error=SpreadTypeMismatch*/
//                                   ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:91:34: Error: Unexpected token '...'.
//   Set<dynamic> set40 = <dynamic>{... /*@error=SpreadTypeMismatch*/
//                                  ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:94:52: Error: Unexpected token '...'.
//   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...
//                                                    ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:97:36: Error: Unexpected token '...'.
//   List<dynamic> lhs50 = <dynamic> [... /*@error=SpreadTypeMismatch*/
//                                    ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:100:35: Error: Unexpected token '...'.
//   Set<dynamic> set50 = <dynamic> {... /*@error=SpreadTypeMismatch*/
//                                   ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:103:52: Error: Unexpected token '...'.
//   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...
//                                                    ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:106:33: Error: Unexpected token '...'.
//   List<String> lhs60 = <String>[... /*@error=SpreadElementTypeMismatch*/
//                                 ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:109:32: Error: Unexpected token '...'.
//   Set<String> set60 = <String>{... /*@error=SpreadElementTypeMismatch*/ spread};
//                                ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:111:36: Error: Unexpected token '...'.
//   Map<int, int> map60 = <int, int>{...
//                                    ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:114:48: Error: Unexpected token '...'.
//   Map<String, String> map61 = <String, String>{...
//                                                ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:117:27: Error: Unexpected token '...'.
//   List<int> lhs70 = <int>[... /*@error=NonNullAwareSpreadIsNull*/ null];
//                           ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:119:26: Error: Unexpected token '...'.
//   Set<int> set70 = <int>{... /*@error=NonNullAwareSpreadIsNull*/ null};
//                          ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:122:6: Error: Unexpected token '...'.
//     {... /*@error=NonNullAwareSpreadIsNull*/ null, ... /*@typeArgs=dynamic*/
//      ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:122:52: Error: Unexpected token '...'.
//     {... /*@error=NonNullAwareSpreadIsNull*/ null, ... /*@typeArgs=dynamic*/
//                                                    ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:125:42: Error: Unexpected token '...'.
//   Map<String, int> map70 = <String, int>{... /*@error=NonNullAwareSpreadIsNull*/
//                                          ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:128:27: Error: Unexpected token '...?'.
//   List<int> lhs80 = <int>[...?null];
//                           ^^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:130:26: Error: Unexpected token '...?'.
//   Set<int> set80 = <int>{...?null};
//                          ^^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:133:6: Error: Unexpected token '...?'.
//     {...?null, ... /*@typeArgs=dynamic*/ []};
//      ^^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:133:16: Error: Unexpected token '...'.
//     {...?null, ... /*@typeArgs=dynamic*/ []};
//                ^^^
//
// pkg/front_end/testcases/spread_collection_inference.dart:135:42: Error: Unexpected token '...?'.
//   Map<String, int> map80 = <String, int>{...?null};
//                                          ^^^^
//
import self as self;
import "dart:core" as core;

static method foo() → 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;
  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>{};
}
static method main() → dynamic {}
