   # Return to the previous garbage level and erase referenced temporary
   # variables in current level from scope.
   endLevel: ->
-    (@variables[name] = 'reuse') for name in @garbage.pop() when @variables[name] is 'var'
+    vars = @variables
+    (vars[name] = 'reuse') for name in @garbage.pop() when vars[name] is 'var'
 
   # Look up a variable name in lexical scope, and declare it if it does not
   # already exist.

  # Does this scope reference any variables that need to be declared in the
  # given function body?
  hasDeclarations: (body) ->
    body is @expressions and @any (k, val) -> val is 'var' or val is 'reuse'

  # Does this scope reference any assignments that need to be declared at the
  # top of the given function body?


  # Return the list of variables first declared in this scope.
  declaredVariables: ->
    (key for key, val of @variables when val in ['var', 'reuse']).sort()

  # Return the list of assignments that are supposed to be made at the top
  # of this scope.
