     meth = @meth or @superReference(o)
     obj  = @variable and @variable.source or 'this'
     if obj.match(/\(/)
-      temp = o.scope.freeVariable()
+      temp = o.scope.freeVariable 'cache'
       obj  = temp
       meth = "(#{temp} = #{ @variable.source })#{ @variable.last }"
     if @isNew

    cond     =  @condition.compile(o)
    set      =  ''
    unless top
      rvar  = o.scope.freeVariable()
      set   = "#{@tab}#{rvar} = [];\n"
      @body = PushNode.wrap(rvar, @body) if @body
    pre     = "#{set}#{@tab}while (#{cond})"

    else if this instanceof ValueNode and options.assignment
      this.cacheIndexes(o)
    else
      reference = literal o.scope.freeVariable 'cache'
      compiled  = new AssignNode reference, this
      [compiled, reference]
    return [pair[0].compile(o), pair[1].compile(o)] if options.precompile
