anchor.diff:  
       if (block.predecessors.length === 1
           && isBlockSinglePredecessor(block.predecessors[0])) {
  +      assert(block.phis.isEmpty());
         tryMergingExpressions(block.predecessors[0]);
       } else {
         expectedInputs = null;
  
positive.code:     for (HInstruction input in instruction.inputs) {
        if (!generateAtUseSite.contains(input)
            && !input.isCodeMotionInvariant()
            && input.usedBy.length == 1) {
          expectedInputs.add(input);
        }
      }
  
negative.code: 
    bool usedOnlyByPhis(instruction) {
      for (HInstruction user in instruction.usedBy) {
        if (user is! HPhi) return false;
      }
      return true;
    }
  