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