code: function(name) {
          if (!this.hasOwnProperty('__handlers__')) {
              return;
          }
          if (!this.__handlers__.hasOwnProperty(name)) {
              return;
          }
  
          var hdls = this.__handlers__[name];
          var l = hdls.length, i = -1, args = arguments;
          // Optimize advise from backbone
          switch (args.length) {
              case 1:
                  while (++i < l) {
                      hdls[i].action.call(hdls[i].context);
                  }
                  return;
              case 2:
                  while (++i < l) {
                      hdls[i].action.call(hdls[i].context, args[1]);
                  }
                  return;
              case 3:
                  while (++i < l) {
                      hdls[i].action.call(hdls[i].context, args[1], args[2]);
                  }
                  return;
              case 4:
                  while (++i < l) {
                      hdls[i].action.call(hdls[i].context, args[1], args[2], args[3]);
                  }
                  return;
              case 5:
                  while (++i < l) {
                      hdls[i].action.call(hdls[i].context, args[1], args[2], args[3], args[4]);
                  }
                  return;
              default:
                  while (++i < l) {
                      hdls[i].action.apply(hdls[i].context, Array.prototype.slice.call(args, 1));
                  }
                  return;
          }
      }
docs: Trigger event
  @param  {string} name