anchor.diff:    // 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});
  
positive.code: void testBottomUpInference() {
    Map<int, int> map = {};
    Set<int> set = Set();
    dynamic dyn = map;
    Iterable<int> iterable = [];
    CustomSet customSet = CustomSet();
    CustomMap customMap = CustomMap();
  
negative.code:   // expect___Of<...>({if (true) ...dyn});
    expectSetOf<int>({if (true) ...iterable});
    expectSetOf<int>({if (true) ...customSet});
    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 ...dynMap});
    // expect___Of<...>({if (true) ...map else ...iterable});
    // expect___Of<...>({if (true) ...map else ...customSet});
    expectMapOf<int, Object>({if (true) ...map else ...customMap});
  
    expectSetOf<int>({if (true) ...set else ...set});
    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) ...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});
  