       else
         acc = prop.base
         [key, val] = acc.cache o, LEVEL_LIST, ref
-        ref = val
+        ref = val if key isnt val
       key = if acc instanceof Literal and IDENTIFIER.test key
         '.' + key
       else
         '[' + key + ']'
-      code += "#{obj}#{key} = #{val}, "
-    code += obj
+      code += "#{oref}#{key} = #{val}, "
+    code += oref
     if o.level <= LEVEL_PAREN then code else "(#{code})"
 
   assigns: (name) ->

        '\n'
      else
        ',\n'
      indent = if prop instanceof Comment then '' else @idt 1
      if prop instanceof Value and prop.tags.this
        prop = new Assign prop.properties[0].name, prop, 'object'
      else if prop not instanceof Assign and prop not instanceof Comment
        prop = new Assign prop, prop, 'object'
      indent + prop.compile(o) + join
    props = props.join ''
    obj   = "{#{ if props then '\n' + props + '\n' + @idt() else '' }}"
    if @tags.front then "(#{obj})" else obj

  compileDynamic: (o, idx) ->
    obj  = o.scope.freeVariable 'obj'
    code = "#{obj} = #{ new Obj(@properties.slice 0, idx).compile o }, "
    for prop, i in @properties.slice idx
      if prop instanceof Comment
        code += prop.compile(o) + ' '
        continue


  compileNode: (o) ->
    for prop, i in @properties when (prop.variable or prop).base instanceof Parens
      rest = @properties.splice i
      break
    o.indent    = idt = @idt 1
    nonComments = (prop for prop in @properties when prop not instanceof Comment)
    lastNoncom  = last nonComments
    props = for prop, i in @properties
