anchor.diff:        bool oldInsideUntranslatedBreakable = insideUntranslatedBreakable;
         insideUntranslatedBreakable = true;
         addStatement(js.js.statement('do {#} while (#)',
  -          [translateInBlock(node.body), visitExpression(node.condition)]));
  +          [translateToStatement(node.body), visitExpression(node.condition)]));
         insideUntranslatedBreakable = oldInsideUntranslatedBreakable;
         return;
       }
  
positive.code:       withExpressions([node.init, node.condition, node.update],
            (List<js.Expression> transformed) {
          addStatement(new js.For(transformed[0], transformed[1], transformed[2],
              translateInBlock(node.body)));
        });
        insideUntranslatedBreakable = oldInsideUntranslated;
        return;
  
negative.code:   /// See the comments of [rewriteFunction] for more explanation.
    void visitTry(js.Try node) {
      if (!shouldTransform(node)) {
        js.Block body = translateToBlock(node.body);
        js.Catch catchPart = (node.catchPart == null)
            ? null
            : new js.Catch(node.catchPart.declaration,
                  translateToBlock(node.catchPart.body));
        js.Block finallyPart = (node.finallyPart == null)
            ? null
            : translateToBlock(node.finallyPart);
        addStatement(new js.Try(body, catchPart, finallyPart));
        return;
      }
  