anchor.diff:        bool oldInsideUntranslatedBreakable = insideUntranslatedBreakable;
         insideUntranslatedBreakable = true;
         addStatement(js.js.statement('do {#} while (#)',
  -          [translateToStatement(node.body), visitExpression(node.condition)]));
  +          [translateInBlock(node.body), visitExpression(node.condition)]));
         insideUntranslatedBreakable = oldInsideUntranslatedBreakable;
         return;
       }
  
positive.code:       bool oldInsideUntranslated = insideUntranslatedBreakable;
        insideUntranslatedBreakable = true;
        withExpression(node.condition, (js.Expression condition) {
          addStatement(new js.While(condition, translateToStatement(node.body)));
        }, store: false);
        insideUntranslatedBreakable = oldInsideUntranslated;
        return;
  
negative.code:   /// Each buffer ends up as its own case part in the big state-switch.
    void beginLabel(int label) {
      assert(!labelledParts.containsKey(label));
      currentStatementBuffer = new List<js.Statement>();
      labelledParts[label] = currentStatementBuffer;
      addStatement(new js.Comment(labelComments[label]));
    }
  