   constructor: (@value) ->
 
   makeReturn: ->
-    if @isStatement() then this else super()
+    if @isPureStatement() then this else new Return this
 
   # Break and continue must be treated as pure statements -- they lose their
   # meaning when wrapped in a closure.

  # Is this an empty block of code?
  isEmpty: ->
    not @expressions.length

  # An Expressions node does not return its entire body, rather it
  # ensures that the final expression is returned.


  children: ['expressions']

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

