           type: 'FunctionExpression'
           params: node.params
           body: node.body
-    { type: 'EmptyStatement' }
 
   removeEmptyStatementsFromBody: (node) ->
     node.body = node.body.filter (n) ->

    @addExplicitUndefinedInitializer node, parent, skip

  consolidateBodies: (node) ->
    console.log 'consolidating prebody of', node.type
    if node._prebody
      console.log "√"
      node.body = node._prebody.concat(node.body)
      delete node._prebody

  moveDeclarationToTopOfScope: (node, paren) ->
    @parent._prebody ?= []
    @parent._prebody.unshift
      type: 'ExpressionStatement'
      expression:
        type: 'AssignmentExpression'

    @consolidateBodies node
    @removeEmptyStatementsFromBody node
  FunctionDeclaration: (node, parent) ->
    @removeUndefinedParameter node
    @moveDeclarationToTopOfScope node, parent
    { type: 'EmptyStatement' }
  FunctionDeclarationExit: (node) ->
    @popStack()
  FunctionExpression: (node) ->
