     return this if not last or last instanceof ReturnNode
     @expressions[idx]: last.makeReturn()
     this
-
-  # A bound function uses a local `__this` variable instead of the real `this`.
-  rewriteThis: ->
-    @traverseChildren false, (child) ->
-      if child instanceof ValueNode and child.base.value is 'this'
-        child.base: literal '__this'
 
   # An **Expressions** is the only node that can serve as the root.
   compile: (o) ->

    top:          del o, 'top'
    o.scope:      sharedScope or new Scope(o.scope, @body, this)
    o.top:        true
    o.indent:     @idt(if @bound then 2 else 1)
    del o, 'noWrap'
    del o, 'globals'
    i: 0

              }
            """

  # Create a function bound to the current value of "this".
  bind: """
        function(func, context) {
            return function(){ return func.apply(context, arguments); };
          }
        """

  # Shortcuts to speed up the lookup time for native functions.
  hasProp: 'Object.prototype.hasOwnProperty'
  slice:   'Array.prototype.slice'
