   # meaning when wrapped in a closure.
   isPureStatement: -> @value in ['break', 'continue', 'debugger']
 
+  isAssignable: -> IDENTIFIER.test @value
+
   isComplex: NO
 
   assigns: (name) -> name is @value

      @value.klass = match[1]
    val = @value.compile o, LEVEL_LIST
    return "#{name}: #{val}" if @context is 'object'
    unless @variable.isComplex() or IDENTIFIER.test assignee = @variable.unwrap().value
      throw SyntaxError "#{assignee} cannot be assigned."
    o.scope.find name unless isValue and (@variable.hasProperties() or @variable.namespaced)
    val = name + " #{ @context or '=' } " + val
    if o.level <= LEVEL_LIST then val else "(#{val})"

    for node in @properties.concat @base
      return no if node.soakNode or node instanceof Call
    yes

  isAssignable: ->
    @hasProperties() or @base.isAssignable()

  assigns: (name) ->
    not @properties.length and @base.assigns name
