/**
  * This generates and sends from the given EE_Message_To_Generate class immediately.
  * @param EE_Message_To_Generate $message_to_generate
  * @return EE_Messages_Queue | null
  */
 public function generate_and_send_now(EE_Message_To_Generate $message_to_generate)
 {
     if (!$message_to_generate->valid()) {
         return null;
     }
     // is there supposed to be a sending messenger for this message?
     if ($message_to_generate instanceof EEI_Has_Sending_Messenger) {
         // make sure it's valid, but if it's not,
         // then set the value of $sending_messenger to an EE_Error object
         // so that downstream code can easily see that things went wrong.
         $sending_messenger = $message_to_generate->sending_messenger() instanceof EE_messenger ? $message_to_generate->sending_messenger() : new EE_Error(__('There was a specific sending messenger requested for the send action, but it was either invalid or not active at time of sending.', 'event_espresso'));
     } else {
         $sending_messenger = null;
     }
     if ($message_to_generate->get_EE_Message()->STS_ID() === EEM_Message::status_idle) {
         $this->_init_queue_and_generator();
         $this->_queue->add($message_to_generate->get_EE_Message());
         $this->_queue->execute(false, $sending_messenger);
         return $this->_queue;
     } elseif ($message_to_generate->get_EE_Message()->STS_ID() === EEM_Message::status_incomplete) {
         $generated_queue = $this->generate_and_return(array($message_to_generate));
         $generated_queue->execute(false, $sending_messenger);
         return $generated_queue;
     }
     return null;
 }