               }
             """
 
+  # 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'

    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

    return this if not last or last instanceof ReturnNode
    @expressions[idx]: last.makeReturn()
    this

  # An **Expressions** is the only node that can serve as the root.
  compile: (o) ->
