     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.

    op          = del o, 'operation'
    props       = if only then @properties[0...@properties.length - 1] else @properties
    o.chainRoot or= this
    baseline    = @base.compile o
    baseline    = "(#{baseline})" if @hasProperties() and (@base instanceof ObjectNode or @isNumber())
    complete    = @last = baseline


  compileNode: (o) ->
    top  = del o, 'top'
    @expression.parenthetical = true
    code = @expression.compile(o)
    if @parenthetical or @isStatement o
      return if top then @tab + code + ';' else code
    "(#{code})"

#### ForNode

