queueForIndexing(copy, null);
queueForIndexing(copy, false, null);
    public synchronized MailItem copy(OperationContext octxt, int itemId, byte type, int folderId) throws IOException, ServiceException {        CopyItem redoRecorder = new CopyItem(mId, itemId, type, folderId);        boolean success = false;        try {            beginTransaction("copy", octxt, redoRecorder);            CopyItem redoPlayer = (CopyItem) mCurrentChange.getRedoPlayer();            MailItem item = getItemById(itemId, type);            checkItemChangeID(item);            int newId;            short destVolumeId;            if (redoPlayer == null) {                newId = getNextItemId(ID_AUTO_INCREMENT);                if (item.getVolumeId() != -1)                    destVolumeId = Volume.getCurrentMessageVolume().getId();                else                    destVolumeId = -1;            } else {                newId = getNextItemId(redoPlayer.getDestId());                destVolumeId = redoPlayer.getDestVolumeId();            }            MailItem copy = item.copy(getFolderById(folderId), newId, destVolumeId);            redoRecorder.setDestId(copy.getId());            redoRecorder.setDestVolumeId(copy.getVolumeId());            // if we're not sharing the index entry, we need to index the new item            if (copy.getIndexId() == copy.getId())                queueForIndexing(copy, null);            success = true;            return copy;        } finally {            endTransaction(success);        }    }