anchor.diff:        } else if (node.hasElse) {
           generateStatements(info.elseGraph);
         }
  -      // We ignore the other branch, even if it isn't visited.
  -      preVisitedBlocks = node.hasElse ? 2 : 1;
       } else {
         startIf(node);
         assert(!isGenerateAtUseSite(node));
         startThen(node);
  -      assert(node.thenBlock === dominated[0]);
         generateStatements(info.thenGraph);
  -      preVisitedBlocks++;
         endThen(node);
  -      HBasicBlock endBlock =
  -          (joinBlock == null || joinBlock.predecessors.length != 2)
  -              ? null
  -              : joinBlock.predecessors[1];
  -      if (node.hasElse && !isEmptyElse(node.elseBlock, endBlock)) {
  +      HStatementInformation elseGraph = info.elseGraph;
  +      if (node.hasElse && !isEmptyElse(elseGraph.start, elseGraph.end)) {
           startElse(node);
  -        assert(node.elseBlock === dominated[1]);
  -        generateStatements(info.elseGraph);
  -        preVisitedBlocks++;
  +        generateStatements(elseGraph);
           endElse(node);
         }
         endIf(node);
       }
  +
  +    HBasicBlock joinBlock = node.joinBlock;
       if (joinBlock !== null && joinBlock.dominator !== node.block) {
         // The join block is dominated by a block in one of the branches.
         // The subgraph traversal never reached it, so we visit it here
  
positive.code:     // branches, and is not the join block.
      // Depending on how the then/else branches terminate
      // (e.g., return/throw/break) there can be any number of these.
      int dominatedCount = dominated.length;
      for (int i = preVisitedBlocks; i < dominatedCount; i++) {
        HBasicBlock dominatedBlock = dominated[i];
        assert(dominatedBlock.dominator === node.block);
        visitBasicBlock(dominatedBlock);
      }
    }
  
  
negative.code:     }
  
      HInstruction condition = node.inputs[0];
      HIfBlockInformation info = node.blockInformation.body;
      if (condition.isConstant()) {
        HConstant constant = condition;
        if (constant.constant.isTrue()) {
  