library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/control_flow_collection.dart:8:5: Error: Unexpected token 'if'.
//     if (oracle()) 2,
//     ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:9:5: Error: Unexpected token 'if'.
//     if (oracle()) 3 else -1,
//     ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:10:19: Error: Unexpected token 'if'.
//     if (oracle()) if (oracle()) 4,
//                   ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:10:5: Error: Unexpected token 'if'.
//     if (oracle()) if (oracle()) 4,
//     ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:11:5: Error: Unexpected token 'for'.
//     for (int i in <int>[5, 6, 7]) i,
//     ^^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:12:36: Error: Unexpected token 'if'.
//     for (int i in <int>[8, 9, 10]) if (oracle()) i,
//                                    ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:12:5: Error: Unexpected token 'for'.
//     for (int i in <int>[8, 9, 10]) if (oracle()) i,
//     ^^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:13:5: Error: Unexpected token 'for'.
//     for (int i = 11; i <= 14; ++i) i,
//     ^^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:17:5: Error: Unexpected token 'if'.
//     if (oracle()) 2,
//     ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:18:5: Error: Unexpected token 'if'.
//     if (oracle()) 3 else -1,
//     ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:19:19: Error: Unexpected token 'if'.
//     if (oracle()) if (oracle()) 4,
//                   ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:19:5: Error: Unexpected token 'if'.
//     if (oracle()) if (oracle()) 4,
//     ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:20:5: Error: Unexpected token 'for'.
//     for (int i in <int>[5, 6, 7]) i,
//     ^^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:21:36: Error: Unexpected token 'if'.
//     for (int i in <int>[8, 9, 10]) if (oracle()) i,
//                                    ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:21:5: Error: Unexpected token 'for'.
//     for (int i in <int>[8, 9, 10]) if (oracle()) i,
//     ^^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:22:5: Error: Unexpected token 'for'.
//     for (int i = 11; i <= 14; ++i) i,
//     ^^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:26:5: Error: Unexpected token 'if'.
//     if (oracle()) 2: 2,
//     ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:27:5: Error: Unexpected token 'if'.
//     if (oracle()) 3: 3 else -1: -1,
//     ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:28:19: Error: Unexpected token 'if'.
//     if (oracle()) if (oracle()) 4: 4,
//                   ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:28:5: Error: Unexpected token 'if'.
//     if (oracle()) if (oracle()) 4: 4,
//     ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:29:5: Error: Unexpected token 'for'.
//     for (int i in <int>[5, 6, 7]) i: i,
//     ^^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:30:36: Error: Unexpected token 'if'.
//     for (int i in <int>[8, 9, 10]) if (oracle()) i: i,
//                                    ^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:30:5: Error: Unexpected token 'for'.
//     for (int i in <int>[8, 9, 10]) if (oracle()) i: i,
//     ^^^
//
// pkg/front_end/testcases/general/control_flow_collection.dart:31:5: Error: Unexpected token 'for'.
//     for (int i = 11; i <= 14; ++i) i: i,
//     ^^^
//
import self as self;
import "dart:core" as core;

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