anchor.diff:  
     final Map<int, HInstruction> workmap = new Map<int, HInstruction>();
     final List<int> worklist = new List<int>();
  +  final Map<HInstruction, Function> pendingOptimizations =
  +      new Map<HInstruction, Function>();  
   
     final Compiler compiler;
     String get name => 'type propagator';
  
positive.code:     }
      return false;
    }
  }
  
  class SsaNonSpeculativeTypePropagator extends SsaTypePropagator {
  
negative.code:   }
  
    void processWorklist() {
      do {
        while (!worklist.isEmpty) {
          int id = worklist.removeLast();
          HInstruction instruction = workmap[id];
          assert(instruction != null);
          workmap.remove(id);
          if (updateType(instruction)) {
            addDependentInstructionsToWorkList(instruction);
          }
        }
        // While processing the optimizable arithmetic instructions, we
        // may discover better type information for dominated users of
        // replaced operands, so we may need to take another stab at
        // emptying the worklist afterwards.
        processPendingOptimizations();
      } while (!worklist.isEmpty);
    }
  
  
    void addDependentInstructionsToWorkList(HInstruction instruction) {}
  
  