   containsPureStatement: ->
     @isPureStatement() or @contains (node) -> node.isPureStatement()
 
-  # Perform an in-order traversal of the AST. Crosses scope boundaries.
-  traverse: (block) -> @traverseChildren true, block
-
   # `toString` representation of the node, for inspecting the parse tree.
   # This is what `coffee --nodes` prints out.
   toString: (idt, override) ->

  traverseChildren: (crossScope, func) ->
    @eachChild (child) ->
      return false if func(child) is false
      if crossScope or child not instanceof Code
        child.traverseChildren crossScope, func

  invert: -> new Op '!', this



  compile: (o) ->
    expr = @expression?.makeReturn()
    if expr and expr not instanceof Return then expr.compile o else super o

  compileNode: (o) ->
    expr = ''
    if @expression
      o.asStatement = true if @expression.isStatement o
      expr = ' ' + @expression.compileBare o
    @tab + 'return' + expr + ';'

#### Value

