/**
  * Triggers an event for handling undefined operators. Event listeners may
  * capture this event and provide operator handling logic, such listeners should
  * alter the provided Query object and then return it back.
  *
  * The triggered event follows the pattern:
  *
  * ```
  * Search.operator<CamelCaseOperatorName>
  * ```
  *
  * For example, `Search.operatorAuthorName` will be triggered for
  * handling an operator named either `author-name` or `author_name`.
  *
  * @param \Cake\ORM\Query $query The query that is expected to be scoped
  * @param \Search\TokenInterface $token Token describing an operator. e.g
  *  `-op_name:op_value`
  * @return mixed Scoped query object expected or null if event was not captured
  *  by any listener
  */
 protected function _triggerOperator(Query $query, TokenInterface $token)
 {
     $eventName = 'Search.' . (string) Inflector::variable('operator_' . $token->name());
     $event = new Event($eventName, $this->_table, compact('query', 'token'));
     return EventManager::instance()->dispatch($event)->result;
 }