public function processResponse()
    {
        $rawResponse = $this->rawResponse;

        if (empty($rawResponse)) {
            return;
        }

        $responseData = unpack("Ccommand/Cstatus/Nidentifier", $rawResponse);

        $this->validateResponse($responseData);

        $statusCode = $responseData['status'];
        $errorDescription = self::$responseDescription[$statusCode];

        if (
               $statusCode == self::ERROR_INVALID_TOKEN_SIZE
            || $statusCode == self::ERROR_INVALID_TOKEN
        ) {
            $recipients = $this->recipients;
            $recipients->current()->setIdentifierStatus(RecipientDevice::DEVICE_NOT_REGISTERED);

            throw new InvalidRecipientException($errorDescription, $recipients);
        }

        throw new DispatchMessageException($errorDescription, $statusCode);
    }