'This generates a mixed state for the message. The most exciting state
is returned/explained, the status prefixed with "mixed-". How exciting
states are, is determined by the order of the STATUSES attribute.
This is lossy, but hopefully in a useful and non-harmful way.'

def _mix_in(self, ci):

    status = self['status']
    if (self.STATUSES.index(status) <= self.STATUSES.index(ci.part_status)):
        mix = copy.copy(ci)
        if (self.bubbly and (status != mix.part_status) and (not mix.part_status.startswith('mixed-'))):
            mix['status'] = ('mixed-%s' % mix.part_status)
        else:
            mix['status'] = mix.part_status
        self._overwrite_with(mix)
    elif (not status.startswith('mixed-')):
        self['status'] = ('mixed-%s' % status)
