anchor.diff:      if (!isInitializerBlock) return false;
   
       SubExpression condition = info.condition;
  -    if (!isCondition(condition)) {
  -      // TODO(lrn): Handle this case here too, so we can remove the
  -      // original loop code.
  -      return false;
  -    }
  +    bool isConditionExpression = isJSCondition(condition);
   
       void visitBodyIgnoreLabels() {
         if (info.body.start.isLabeledBlock()) {
  
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);
  