/**
  * @param \MailSo\Mail\MessageCollection &$oMessageCollection
  * @param array $aRequestIndexOrUids
  * @param bool $bIndexAsUid
  * @param bool $bSimple = false
  *
  * @throws \MailSo\Net\Exceptions\Exception
  * @throws \MailSo\Imap\Exceptions\Exception
  */
 public function MessageListByRequestIndexOrUids(&$oMessageCollection, $aRequestIndexOrUids, $bIndexAsUid, $bSimple = false)
 {
     if (\is_array($aRequestIndexOrUids) && 0 < \count($aRequestIndexOrUids)) {
         $aFetchResponse = $this->oImapClient->Fetch(array(\MailSo\Imap\Enumerations\FetchType::INDEX, \MailSo\Imap\Enumerations\FetchType::UID, \MailSo\Imap\Enumerations\FetchType::RFC822_SIZE, \MailSo\Imap\Enumerations\FetchType::INTERNALDATE, \MailSo\Imap\Enumerations\FetchType::FLAGS, \MailSo\Imap\Enumerations\FetchType::BODYSTRUCTURE, $bSimple ? $this->getEnvelopeOrHeadersRequestStringForSimpleList() : $this->getEnvelopeOrHeadersRequestString()), \MailSo\Base\Utils::PrepearFetchSequence($aRequestIndexOrUids), $bIndexAsUid);
         if (\is_array($aFetchResponse) && 0 < \count($aFetchResponse)) {
             $aFetchIndexArray = array();
             $oFetchResponseItem = null;
             foreach ($aFetchResponse as &$oFetchResponseItem) {
                 $aFetchIndexArray[$bIndexAsUid ? $oFetchResponseItem->GetFetchValue(\MailSo\Imap\Enumerations\FetchType::UID) : $oFetchResponseItem->GetFetchValue(\MailSo\Imap\Enumerations\FetchType::INDEX)] =& $oFetchResponseItem;
                 unset($oFetchResponseItem);
             }
             foreach ($aRequestIndexOrUids as $iFUid) {
                 if (isset($aFetchIndexArray[$iFUid])) {
                     $oMessageCollection->Add(Message::NewFetchResponseInstance($oMessageCollection->FolderName, $aFetchIndexArray[$iFUid]));
                 }
             }
         }
     }
 }