_callHandlerIfActionNotHandled(event, keyName, keyEventType, componentId, focusTreeId) {
    const eventName = describeKeyEventType(keyEventType);
    const combinationName = this._describeCurrentCombination();

    if (!this.componentList.anyActionsForEventType(keyEventType)) {
      this.logger.logIgnoredEvent(`'${combinationName}' ${eventName}`, `it doesn't have any ${eventName} handlers`, componentId);

      return;
    }

    if (this.eventPropagator.isHandled()) {
      this.logger.logIgnoredEvent(`'${combinationName}' ${eventName}`, 'it has already been handled', componentId);
    } else {
      this.logger.verbose(
        this.logger.keyEventPrefix(componentId, {focusTreeId}),
        `Attempting to find action matching '${combinationName}' ${eventName} . . .`
      );

      const { previousPosition } = this.eventPropagator;

      const componentPosition = this.componentList.getPositionById(componentId);

      const handlerWasCalled =
        this.actionResolver.callClosestMatchingHandler(
          event, keyName, keyEventType, componentPosition,
          previousPosition === -1 ? 0 : previousPosition
        );

      if (handlerWasCalled) {
        this.eventPropagator.setHandled();
      }
    }
  }
Calls the first handler that matches the current key event if the action has not
already been handled in a more deeply nested component
@param {SyntheticKeyboardEvent} event Keyboard event object to be passed to the handler
@param {NormalizedKeyName} keyName Normalized key name
@param {KeyEventType} keyEventType The record index of the current key event type
@param {FocusTreeId} focusTreeId Id of focus tree component thinks it's apart of
@param {ComponentId} componentId Index of the component that is currently handling
       the keyboard event
@private