anchor.diff:    /// See the comments of [rewriteFunction] for more explanation.
     void visitTry(js.Try node) {
       if (!shouldTransform(node)) {
  -      js.Block body = translateToBlock(node.body);
  +      js.Block body = translateInBlock(node.body);
         js.Catch catchPart = (node.catchPart == null)
             ? null
             : new js.Catch(node.catchPart.declaration,
  -                translateToBlock(node.catchPart.body));
  +              translateInBlock(node.catchPart.body));
         js.Block finallyPart = (node.finallyPart == null)
             ? null
  -          : translateToBlock(node.finallyPart);
  +          : translateInBlock(node.finallyPart);
         addStatement(new js.Try(body, catchPart, finallyPart));
         return;
       }
  
positive.code:     unsupported(node);
    }
  
    List<js.Statement> translateToStatementSequence(js.Statement node) {
      assert(!shouldTransform(node));
      List<js.Statement> oldBuffer = currentStatementBuffer;
      currentStatementBuffer = <js.Statement>[];
      List<js.Statement> resultBuffer = currentStatementBuffer;
      visitStatement(node);
      currentStatementBuffer = oldBuffer;
      return resultBuffer;
    }
  
    js.Statement translateToStatement(js.Statement node) {
      List<js.Statement> statements = translateToStatementSequence(node);
      if (statements.length == 1)
        return statements.single;
      return new js.Block(statements);
    }
  
    js.Block translateToBlock(js.Statement node) {
      return new js.Block(translateToStatementSequence(node));
    }
  
    @override
    void visitIf(js.If node) {
      if (!shouldTransform(node.then) && !shouldTransform(node.otherwise)) {
        withExpression(node.condition, (js.Expression condition) {
          js.Statement translatedThen = translateToStatement(node.then);
          js.Statement translatedElse = translateToStatement(node.otherwise);
          addStatement(new js.If(condition, translatedThen, translatedElse));
        }, store: false);
        return;
      }
  
negative.code:       bool oldInsideUntranslatedBreakable = insideUntranslatedBreakable;
        insideUntranslatedBreakable = true;
        addStatement(js.js.statement('do {#} while (#)',
            [translateInBlock(node.body), visitExpression(node.condition)]));
        insideUntranslatedBreakable = oldInsideUntranslatedBreakable;
        return;
      }
  