     if @isStatement o then @compileStatement o else @compileExpression o
 
   makeReturn: ->
-    if @isStatement()
-      @body     and= @ensureExpressions @body.makeReturn()
-      @elseBody and= @ensureExpressions @elseBody.makeReturn()
-      this
-    else
-      new Return this
+    @body     and= new Expressions [@body.makeReturn()]
+    @elseBody and= new Expressions [@elseBody.makeReturn()]
+    this
 
   ensureExpressions: (node) ->
     if node instanceof Expressions then node else new Expressions [node]

  constructor: (@value) ->

  makeReturn: ->
    if @isStatement() then this else super()

  # Break and continue must be treated as pure statements -- they lose their
  # meaning when wrapped in a closure.


  children: ['expressions']

  constructor: (nodes) ->
    @expressions = compact flatten nodes or []

