'Copy mbox- or MMDF-specific state to message insofar as possible.'

def _explain_to(self, message):

    if isinstance(message, MaildirMessage):
        flags = set(self.get_flags())
        if ('O' in flags):
            message.set_subdir('cur')
        if ('F' in flags):
            message.add_flag('F')
        if ('A' in flags):
            message.add_flag('R')
        if ('R' in flags):
            message.add_flag('S')
        if ('D' in flags):
            message.add_flag('T')
        del message['status']
        del message['x-status']
        maybe_date = '    '.join(self.get_from().split()[(-5):])
        try:
            message.set_date(calendar.timegm(time.strptime(maybe_date, '%a    %b    %d    %H:%M:%S    %Y')))
        except (ValueError, OverflowError):
            pass
    elif isinstance(message, _mboxMMDFMessage):
        message.set_flags(self.get_flags())
        message.set_from(self.get_from())
    elif isinstance(message, MHMessage):
        flags = set(self.get_flags())
        if ('R' not in flags):
            message.add_sequence('unseen')
        if ('A' in flags):
            message.add_sequence('replied')
        if ('F' in flags):
            message.add_sequence('flagged')
        del message['status']
        del message['x-status']
    elif isinstance(message, BabylMessage):
        flags = set(self.get_flags())
        if ('R' not in flags):
            message.add_label('unseen')
        if ('D' in flags):
            message.add_label('deleted')
        if ('A' in flags):
            message.add_label('answered')
        del message['status']
        del message['x-status']
    elif isinstance(message, Message):
        pass
    else:
        raise TypeError(('Cannot    convert    to    specified    type:    %s' % type(message)))
