     @tab     = o.indent
     top     = if @topSensitive() then @options.top else del @options, 'top'
     closure = @isStatement(o) and not @isPureStatement() and not top and
-              not @options.asStatement and this not instanceof Comment and
-              not @containsPureStatement()
+              not @options.asStatement and this not instanceof Comment
     code = if closure then @compileClosure(@options) else @compileNode(@options)
     code
 

  # Wrap the expressions body, unless it contains a pure statement,
  # in which case, no dice. If the body mentions `this` or `arguments`,
  # then make sure that the closure wrapper preserves the original values.
  wrap: (expressions, statement) ->
    return expressions if expressions.containsPureStatement()
    func = new Parens new Code [], Expressions.wrap [expressions]
    args = []

  # object with their parent closure, to preserve the expected lexical scope.
  compileClosure: (o) ->
    o.sharedScope = o.scope
    Closure.wrap(this, no, yes).compile o

  # If the code generation wishes to use the result of a complex expression
  # in multiple places, ensure that the expression is only ever evaluated once,
