 
   ForStatement: (node) ->
     # init, test, update, body
-    body = if node.update or (node.body.body.length > 0)
-      @indent => [ @walk(node.body) ]
-    else
-      @indent => [ @indent(), "continue\n" ]
+    @injectUpdateIntoBody(node)
+
+    body = @makeLoopBody(node.body)
 
     init = if node.init
       [ @walk(node.init), "\n", @indent() ]

  parenthesizeObjectIfFunction: (node) ->
    if node.object.type is 'FunctionExpression'
      node.object._parenthesized = true

  consolidateCases: (node) ->
    list = []

    else
      id = @walk(node.left.declarations[0].id)

    body = @makeLoopBody(node.body)

    [ "for ", id, " of ", @walk(node.right), "\n", body ]

  makeLoopBody: (body) ->
    isBlock = body?.type is 'BlockStatement'
    if not body or (isBlock and body.body.length is 0)
      @indent => [ @indent(), "continue\n" ]
    else if isBlock
      @indent => @walk(body)
    else
      @indent => [ @indent(), @walk(body) ]

  CoffeeEscapedExpression: (node) ->
    [ '`', node.value, '`' ]
