anchor.diff:              initialization = null;
             }
           }
  -        addIndentation();
           for (LabelElement label in info.labels) {
             if (label.isTarget) {
               writeLabel(label);
               buffer.add(":");
             }
           }
  -        if (info.updates !== null && isExpression(info.updates)) {
  +        if (isConditionExpression &&
  +            info.updates !== null && isJSExpression(info.updates)) {
             // If we have an updates graph, and it's expressible as an
             // expression, generate a for-loop.
  +          addIndentation();
             buffer.add("for (");
             if (initialization !== null) {
               if (initializationType != TYPE_DECLARATION) {
  
positive.code:         return;
        } else if (!isGenerateAtUseSite(instruction)) {
          if (instruction is !HIf && instruction is !HTypeGuard &&
              !isGeneratingExpression()) {
            addIndentation();
          }
          if (isGeneratingExpression()) {
  
negative.code:           if (initialization !== null) {
              visitSubGraph(initialization);
            }
            addIndentation();
            buffer.add("while (");
            if (isConditionExpression) {
              visitConditionGraph(condition);
              buffer.add(") {\n");
              indent++;
            } else {
              buffer.add("true) {\n");
              indent++;
              visitSubGraph(condition);
              addIndentation();
              buffer.add("if (!");
              use(condition.end.last.inputs[0], JSPrecedence.PREFIX_PRECEDENCE);
              buffer.add(") break;\n");
            }
            if (info.updates !== null) {
              wrapLoopBodyForContinue(info);
              visitSubGraph(info.updates);
  