     @returns = yes
     this
 
-  containsPureStatement: While::containsPureStatement
-
   # Welcome to the hairiest method in all of CoffeeScript. Handles the inner
   # loop, filtering, stepping, and result saving for array, object, and range
   # comprehensions. Some of the generated code can be shared in common, and
   # some cannot.
   compileNode: (o) ->
     body          = Expressions.wrap [@body]
-    hasPureLast   = last(body.expressions)?.containsPureStatement()
+    hasPureLast   = last(body.expressions)?.jumps()
     source        = if @range then @source.base else @source
     scope         = o.scope
     name          = @name  and @name.compile o, LEVEL_LIST

# which is helpful for recording the result arrays from comprehensions.
Push =
  wrap: (name, exps) ->
    return exps if exps.isEmpty() or last(exps.expressions).containsPureStatement()
    exps.push new Call new Value(new Literal(name), [new Access new Literal 'push']), [exps.pop()]

#### Closure

  # Is this node of a certain type, or does it contain the type?
  containsType: (type) ->
    this instanceof type or @contains (node) -> node instanceof type

  # Pull out the last non-comment node of a node list.
  lastNonComment: (list) ->
