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

            [obj, idx] = @matchParens o, obj
          else
            idx = if obj.tags.this then obj.properties[0].name else obj
      unless obj instanceof Value or obj instanceof Splat
        throw SyntaxError \
          'destructuring assignment must use only identifiers on the left-hand side.'
      if not splat and obj instanceof Splat
        val   = new Literal obj.compileValue o, valVar, i, olength - i - 1
        splat = true


  matchParens: (o, obj) ->
    continue until obj is obj = obj.unwrap()
    Value.wrap(obj).cacheReference o

#### Code
