 
   children: ['expression']
 
+  topSensitive: YES
+
   constructor: (@expression) ->
     super()
 
   isStatement: (o) ->
-    @expression.isStatement(o)
+    @expression.isStatement o
   isComplex: ->
     @expression.isComplex()
 
-  topSensitive: YES
-
   makeReturn: ->
     @expression.makeReturn()
 
   compileNode: (o) ->
     top  = del o, 'top'
     @expression.parenthetical = true
-    code = @expression.compile(o)
+    code = @expression.compile o
     return code if top and @expression.isPureStatement o
     if @parenthetical or @isStatement o
       return if top then @tab + code + ';' else code

        else
          params.push param
    o.scope.startLevel()
    params = (param.compile(o) for param in params)
    @body.makeReturn() unless empty or @noReturn
    (o.scope.parameter(param)) for param in params
    comm  = if @comment then @comment.compile(o) + '\n' else ''
    o.indent = @idt 2 if @className
    code  = if @body.expressions.length then "\n#{ @body.compileWithDeclarations(o) }\n" else ''


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

  compileNode: (o) ->
