       @source = baseline
       if prop.soakNode
         if @base.containsType(CallNode) and i is 0
-          temp = o.scope.freeVariable()
+          temp = o.scope.freeVariable 'cache'
           complete = "(#{ baseline = temp } = (#{complete}))"
         complete = if i is 0
           "(typeof #{complete} === \"undefined\" || #{baseline} === null) ? undefined : "


  compileLoopTest: (o) ->
    [@arr1, @arr2] = @array.compileReference o, precompile: yes
    [i, l] = [o.scope.freeVariable(), o.scope.freeVariable()]
    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)"


    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
