     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

      else
        if param.attach
          {value} = param
          [param, param.splat] = [literal(o.scope.freeVariable()), param.splat]
          @body.unshift new AssignNode new ValueNode(literal('this'), [new AccessorNode value]), param
        if param.splat
          splat           = new SplatNode param.value


  compileLoopTest: (o) ->
    [@arr1, @arr2] = @array.compileReference o, precompile: yes
    [i, l] = [o.scope.freeVariable('index'), o.scope.freeVariable('cache')]
    prefix = if @obj1 isnt @obj2 then @obj1 + '; ' else ''
    "(function(){ #{prefix}for (var #{i}=0, #{l}=#{@arr1}.length; #{i}<#{l}; #{i}++) { if (#{@arr2}[#{i}] === #{@obj2}) return true; } return false; }).call(this)"

