code: function(name, callback, context) {
              if (!this._events || !this.multipleEvents('off', name, [callback, context])) return this;
  
              // Remove all callbacks for all events.
              if (!name && !callback && !context) {
                  this._events = void 0;
                  return this;
              }
  
              var names = name ? [name] : _.keys(this._events);
              for (var i = 0, length = names.length; i < length; i++) {
                  name = names[i];
  
                  // Bail out if there are no events stored.
                  var events = this._events[name];
                  if (!events) continue;
  
                  // Remove all callbacks for this event.
                  if (!callback && !context) {
                      delete this._events[name];
                      continue;
                  }
  
                  // Find any remaining events.
                  var remaining = [];
                  for (var j = 0, k = events.length; j < k; j++) {
                      var event = events[j];
                      if (
                          callback && callback !== event.callback &&
                          callback !== event.callback._callback ||
                          context && context !== event.context
                      ) {
                          remaining.push(event);
                      }
                  }
  
                  // Replace events if there are any remaining.  Otherwise, clean up.
                  if (remaining.length) {
                      this._events[name] = remaining;
                  } else {
                      delete this._events[name];
                  }
              }
  
              return this;
          }
docs: Remove one or many callbacks. If `context` is null, removes all
  callbacks with that function. If `callback` is null, removes all
  callbacks for the event. If `name` is null, removes all bound
  callbacks for all events.
  
  @method off
  @param {string} name event name (or names separated by space)
  @param {function} [callback] callback for this event
  @param {object} [context] content for the callback
  @chainable