queueForIndexing(msg, pm);
queueForIndexing(msg, true, pm);
    private synchronized Message saveDraftInternal(OperationContext octxt, ParsedMessage pm, int id) throws IOException, ServiceException {        byte[] data;        String digest;        int size;        try {            data = pm.getRawData();  digest = pm.getRawDigest();  size = pm.getRawSize();        } catch (MessagingException me) {            throw MailServiceException.MESSAGE_PARSE_ERROR(me);        }        SaveDraft redoRecorder = new SaveDraft(mId, id, digest, size);        boolean success = false;        try {            beginTransaction("saveDraft", octxt, redoRecorder);            SaveDraft redoPlayer = (SaveDraft) mCurrentChange.getRedoPlayer();            Message msg = getMessageById(id);            if (!msg.isTagged(mDraftFlag))                throw MailServiceException.IMMUTABLE_OBJECT(id);            if (!checkItemChangeID(msg))                throw MailServiceException.MODIFY_CONFLICT();            // content changed, so we're obliged to change the IMAP uid            int imapID = getNextItemId(redoPlayer == null ? ID_AUTO_INCREMENT : redoPlayer.getImapId());            redoRecorder.setImapId(imapID);            short volumeId = redoPlayer == null ? Volume.getCurrentMessageVolume().getId() : redoPlayer.getVolumeId();            // update the content and increment the revision number            Blob blob = msg.setContent(data, digest, volumeId, pm);            redoRecorder.setMessageBodyInfo(data, blob.getPath(), blob.getVolumeId());            // NOTE: msg is now uncached (will this cause problems during commit/reindex?)            queueForIndexing(msg, pm);            success = true;            return msg;        } finally {            endTransaction(success);        }    }