anchor.diff:          } else {
             define(instruction);
           }
  -        // Control flow instructions know how to handle ';'.
  +        // Control flow instructions, and some other instructions,
  +        // know how to handle ';'.
           if (instruction is !HControlFlow && instruction is !HTypeGuard &&
  -            !isGeneratingExpression()) {
  +            instruction is !HBoundsCheck && !isGeneratingExpression()) {
             buffer.add(';\n');
           }
         } else if (instruction is HIf) {
  
positive.code:     buffer.add(';\n');
    }
  
    visitBoundsCheck(HBoundsCheck node) {
      HInstruction index = node.index;
      if (index.isConstant()) {
        HConstant constantInstruction = index;
        Constant constant = constantInstruction.constant;
        if (!constant.isInt()) {
          compiler.internalError(
            'String or List index not a number',
            instruction: index);
        }
        IntConstant intConstant = constant;
        if (intConstant.value < 0) {
          generateThrowWithHelper('ioore', index);
          return;
        }
        buffer.add('if (');
      } else {
        buffer.add('if (');
        use(index, JSPrecedence.RELATIONAL_PRECEDENCE);
        buffer.add(' < 0 || ');
      }
      use(index, JSPrecedence.RELATIONAL_PRECEDENCE);
      buffer.add(' >= ');
      use(node.length, JSPrecedence.SHIFT_PRECEDENCE);
      buffer.add(") ");
      generateThrowWithHelper('ioore', index);
    }
  
    visitIntegerCheck(HIntegerCheck node) {
      buffer.add('if (');
      use(node.value, JSPrecedence.EQUALITY_PRECEDENCE);
      buffer.add(' !== (');
  
negative.code:         return;
        } else if (!isGenerateAtUseSite(instruction)) {
          if (instruction is !HIf && instruction is !HTypeGuard &&
              instruction is !HBoundsCheck && !isGeneratingExpression()) {
            addIndentation();
          }
          if (isGeneratingExpression()) {
  