 
   unwrap    : -> @body
   isComplex : -> @body.isComplex()
-
-  compileNode: (o) ->
-    expr = @body.unwrap()
-    if expr instanceof Value and expr.isAtomic()
-      expr.front = @front
-      return expr.compile o
-    code = expr.compile o, LEVEL_PAREN
-    bare = o.level < LEVEL_OP and (expr instanceof Op or expr instanceof Call or
-      (expr instanceof For and expr.returns))
-    if bare then code else "(#{code})"
 
 #### For
 

  constructor: (@index) ->

  children: ['index']

  compile: (o) ->
    "[#{ @index.compile o, LEVEL_PAREN }]"

  isComplex: ->
    @index.isComplex()

  assigns: (name) ->
    @[if @context is 'object' then 'value' else 'variable'].assigns name

#### Code

# A function definition. This is the only node that creates a new Scope.
