docs: function sendRecursively(event, currentState, isUnhandledPass) {
    var log = this.enableLogging,
        eventName = isUnhandledPass ? 'unhandledEvent' : event,
        action = currentState[eventName],
        contexts, sendRecursiveArguments, actionArguments;
  
    contexts = [].slice.call(arguments, 3);
  
    // Test to see if the action is a method that
    // can be invoked. Don't blindly check just for
    // existence, because it is possible the state
    // manager has a child state of the given name,
    // and we should still raise an exception in that
    // case.
    if (typeof action === 'function') {
      if (log) {
        if (isUnhandledPass) {
          Ember.Logger.log(`STATEMANAGER: Unhandled event '${event}' being sent to state ${currentState.get('path')}.`);
        } else {
          Ember.Logger.log(`STATEMANAGER: Sending event '${event}' to state ${currentState.get('path')}.`);
        }
      }
  
      actionArguments = contexts;
      if (isUnhandledPass) {
        actionArguments.unshift(event);
      }
      actionArguments.unshift(this);
  
      return action.apply(currentState, actionArguments);
    } else {
      var parentState = get(currentState, 'parentState');
      if (parentState) {
  
        sendRecursiveArguments = contexts;
        sendRecursiveArguments.unshift(event, parentState, isUnhandledPass);
  
        return sendRecursively.apply(this, sendRecursiveArguments);
      } else if (!isUnhandledPass) {
        return sendEvent.call(this, event, contexts, true);
      }
    }
  }