code: function(fn, obj, sFn, c) {
          var f = fn, a;
          if (c) {
              a = [fn, c].concat(Y.Array(arguments, 4, true));
              f = Y.rbind.apply(Y, a);
          }
  
          return this._inject(BEFORE, f, obj, sFn);
      }
docs: Execute the supplied method before the specified function
  @method before
  @param fn {Function} the function to execute
  @param obj the object hosting the method to displace
  @param sFn {string} the name of the method to displace
  @param c The execution context for fn
  @param arg* {mixed} 0..n additional arguments to supply to the subscriber
  when the event fires.
  @return {string} handle for the subscription
  @static