     o.scope.find name unless @isValue() and (@variable.hasProperties() or @variable.namespaced)
     val = "#{name} = #{val}"
     return "#{@tab}#{val};" if stmt
-    if top then val else "(#{val})"
+    if top or @parenthetical then val else "(#{val})"
 
   # Brief implementation of recursive pattern matching, when assigning array or
   # object literals to a value. Peeks at their properties to assign inner names.


  compileNode: (o) ->
    top  = del o, 'top'
    code = @expression.compile(o)
    if @isStatement(o)
      return (if top then @tab + code + ';' else code)
    l    = code.length
    code = code.substr(o, l-1) if code.substr(l-1, 1) is ';'
    if @expression instanceof AssignNode then code else "(#{code})"

#### ForNode


  constructor: (@expression) ->

  compileNode: (o) ->
    test = ExistenceNode.compileTest(o, @expression)[0]
    if @parenthetical then test.substring(1, test.length - 1) else test

  # The meat of the **ExistenceNode** is in this static `compileTest` method
  # because other nodes like to check the existence of their variables as well.
