text: define(['slice'], function( slice ) {
    // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js
    // es5.github.com/#x15.3.4.5
  
    if (!Function.prototype.bind) {
      Function.prototype.bind = function bind(that) {
  
        var target = this;
  
        if (typeof target != "function") {
          throw new TypeError();
        }
  
        var args = slice.call(arguments, 1);
        var bound = function() {
  
          if (this instanceof bound) {
  
            var F = function(){};
            F.prototype = target.prototype;
            var self = new F();
  
            var result = target.apply(
              self,
              args.concat(slice.call(arguments))
            );
            if (Object(result) === result) {
              return result;
            }
            return self;
  
          } else {
  
            return target.apply(
              that,
              args.concat(slice.call(arguments))
            );
  
          }
  
        };
  
        return bound;
      };
    }
  
    return Function.prototype.bind;
  });
  