diff --git a/tests/language_2/control_flow_collections/map_set_ambiguity_test.dart b/tests/language_2/control_flow_collections/map_set_ambiguity_test.dart
index 271bb09..6ce77de 100644
--- a/tests/language_2/control_flow_collections/map_set_ambiguity_test.dart
+++ b/tests/language_2/control_flow_collections/map_set_ambiguity_test.dart
@@ -18,7 +18,8 @@
 void testBottomUpInference() {
   Map<int, int> map = {};
   Set<int> set = Set();
-  dynamic dyn = map;
+  dynamic dynMap = map;
+  dynamic dynSet = set;
   Iterable<int> iterable = [];
   CustomSet customSet = CustomSet();
   CustomMap customMap = CustomMap();
@@ -30,25 +31,25 @@
   // expect___Of<...>({if (true) ...dyn});
   expectSetOf<int>({if (true) ...iterable});
   expectSetOf<int>({if (true) ...customSet});
-  expectMapOf<int, int>({if (true) ...customMap});
+  expectMapOf<int, String>({if (true) ...customMap});
 
   expectMapOf<int, int>({if (true) ...map else ...map});
   // expect___Of<...>({if (true) ...map else ...set});
-  expectMapOf<dynamic, dynamic>({if (true) ...map else ...dyn});
+  expectMapOf<dynamic, dynamic>({if (true) ...map else ...dynMap});
   // expect___Of<...>({if (true) ...map else ...iterable});
   // expect___Of<...>({if (true) ...map else ...customSet});
-  expectMapOf<int, int>({if (true) ...map else ...customMap});
+  expectMapOf<int, Object>({if (true) ...map else ...customMap});
 
   expectSetOf<int>({if (true) ...set else ...set});
-  expectSetOf<dynamic>({if (true) ...set else ...dyn});
+  expectSetOf<dynamic>({if (true) ...set else ...dynSet});
   expectSetOf<int>({if (true) ...set else ...iterable});
   expectSetOf<int>({if (true) ...set else ...customSet});
   // expect___Of<...>({if (true) ...set else ...customMap});
 
   // expect___Of<...>({if (true) ...dyn else ...dyn});
-  expectSetOf<dynamic>({if (true) ...dyn else ...iterable});
-  expectSetOf<dynamic>({if (true) ...dyn else ...customSet});
-  expectMapOf<dynamic, dynamic>({if (true) ...dyn else ...customMap});
+  expectSetOf<dynamic>({if (true) ...dynSet else ...iterable});
+  expectSetOf<dynamic>({if (true) ...dynSet else ...customSet});
+  expectMapOf<dynamic, dynamic>({if (true) ...dynMap else ...customMap});
 
   expectSetOf<int>({if (true) ...iterable else ...iterable});
   expectSetOf<int>({if (true) ...iterable else ...customSet});
@@ -57,7 +58,7 @@
   expectSetOf<int>({if (true) ...customSet else ...customSet});
   // expect___Of<...>({if (true) ...customSet else ...customMap});
 
-  expectMapOf<int, int>({if (true) ...customMap else ...customMap});
+  expectMapOf<int, String>({if (true) ...customMap else ...customMap});
 
   // Note: The commented out cases are the error cases. They are shown here for
   // completeness and tested in map_set_ambiguity_error_test.dart.
@@ -66,30 +67,30 @@
   // expect___Of<...>({for (; false;) ...dyn});
   expectSetOf<int>({for (; false;) ...iterable});
   expectSetOf<int>({for (; false;) ...customSet});
-  expectMapOf<int, int>({for (; false;) ...customMap});
+  expectMapOf<int, String>({for (; false;) ...customMap});
 
   expectMapOf<int, int>({for (; false;) ...map, for (; false;) ...map});
   // expect___Of<...>({for (; false;) ...map, for (; false;) ...set});
   expectMapOf<dynamic, dynamic>(
-      {for (; false;) ...map, for (; false;) ...dyn});
+      {for (; false;) ...map, for (; false;) ...dynMap});
   // expect___Of<...>({for (; false;) ...map, for (; false;) ...iterable});
   // expect___Of<...>({for (; false;) ...map, for (; false;) ...customSet});
-  expectMapOf<int, int>(
+  expectMapOf<int, Object>(
       {for (; false;) ...map, for (; false;) ...customMap});
 
   expectSetOf<int>({for (; false;) ...set, for (; false;) ...set});
-  expectSetOf<dynamic>({for (; false;) ...set, for (; false;) ...dyn});
+  expectSetOf<dynamic>({for (; false;) ...set, for (; false;) ...dynSet});
   expectSetOf<int>({for (; false;) ...set, for (; false;) ...iterable});
   expectSetOf<int>({for (; false;) ...set, for (; false;) ...customSet});
   // expect___Of<...>({for (; false;) ...set, for (; false;) ...customMap});
 
   // expect___Of<...>({for (; false;) ...dyn, for (; false;) ...dyn});
   expectSetOf<dynamic>(
-      {for (; false;) ...dyn, for (; false;) ...iterable});
+      {for (; false;) ...dynSet, for (; false;) ...iterable});
   expectSetOf<dynamic>(
-      {for (; false;) ...dyn, for (; false;) ...customSet});
+      {for (; false;) ...dynSet, for (; false;) ...customSet});
   expectMapOf<dynamic, dynamic>(
-      {for (; false;) ...dyn, for (; false;) ...customMap});
+      {for (; false;) ...dynMap, for (; false;) ...customMap});
 
   expectSetOf<int>(
       {for (; false;) ...iterable, for (; false;) ...iterable});
@@ -103,7 +104,7 @@
   // expect___Of<...>(
   //     {for (; false;) ...customSet, for (; false;) ...customMap});
 
-  expectMapOf<int, int>(
+  expectMapOf<int, String>(
       {for (; false;) ...customMap, for (; false;) ...customMap});
 }
 
