     [ "this" ]
 
   CallExpression: (node, ctx) ->
-    @parenthesizeArguments(node)
     @parenthesizeCallee(node)
 
     callee = @walk(node.callee)
-    list = commaDelimit(node.arguments.map(@walk))
+    list = @makeSequence(node.arguments)
 
     hasArgs = list.length > 0
     node._isStatement = ctx.parent.type is 'ExpressionStatement'

    [ ]

  NewExpression: (node) ->
    @parenthesizeArguments(node)

    callee = if node.callee?.type is 'Identifier'
      [ @walk(node.callee) ]
    else
      [ '(', @walk(node.callee), ')' ]

    args = if node.arguments?.length
      [ '(', commaDelimit(node.arguments.map(@walk)), ')' ]
    else
      []



    [ left, "\n", right ]

  ###*
  # makeSequence():
  # Builds a comma-separated sequence of nodes.
  ###

  makeSequence: (list) ->
    for arg, i in list
      isLast = i is (list.length-1)
      if arg.type is "FunctionExpression"
        if not isLast
          arg._parenthesized = true

    commaDelimit(list.map(@walk))

  ###*
  # makeParams():
  # Builds parameters for a function list.
  ###

  makeParams: (params) ->
    if params.length
      [ '(', delimit(params.map(@walk), ', '), ') ']
    else
