throws MailboxException {
Message<Long> copy;
if (original instanceof JPAStreamingMessage) {
copy = new JPAStreamingMessage((JPAMailbox) mailbox, uid, modSeq, original);
} else if (original instanceof JPAEncryptedMessage) {
copy = new JPAEncryptedMessage((JPAMailbox) mailbox, uid, modSeq, original);
} else {
copy = new JPAMessage((JPAMailbox) mailbox, uid, modSeq, original);
}
return save(mailbox, copy);
}