def unserialize(self, msg_list, content=True, copy=True):
minlen = <NUM_LIT:4><EOL>message = {}<EOL>if not copy:<EOL><INDENT>for i in range(minlen):<EOL><INDENT>msg_list[i] = msg_list[i].bytes<EOL><DEDENT><DEDENT>if self.auth is not None:<EOL><INDENT>signature = msg_list[<NUM_LIT:0>]<EOL>if not signature:<EOL><INDENT>raise ValueError("<STR_LIT>")<EOL><DEDENT>if signature in self.digest_history:<EOL><INDENT>raise ValueError("<STR_LIT>"%signature)<EOL><DEDENT>self.digest_history.add(signature)<EOL>check = self.sign(msg_list[<NUM_LIT:1>:<NUM_LIT:4>])<EOL>if not signature == check:<EOL><INDENT>raise ValueError("<STR_LIT>"%signature)<EOL><DEDENT><DEDENT>if not len(msg_list) >= minlen:<EOL><INDENT>raise TypeError("<STR_LIT>"%minlen)<EOL><DEDENT>header = self.unpack(msg_list[<NUM_LIT:1>])<EOL>message['<STR_LIT>'] = header<EOL>message['<STR_LIT>'] = header['<STR_LIT>']<EOL>message['<STR_LIT>'] = header['<STR_LIT>']<EOL>message['<STR_LIT>'] = self.unpack(msg_list[<NUM_LIT:2>])<EOL>if content:<EOL><INDENT>message['<STR_LIT:content>'] = self.unpack(msg_list[<NUM_LIT:3>])<EOL><DEDENT>else:<EOL><INDENT>message['<STR_LIT:content>'] = msg_list[<NUM_LIT:3>]<EOL><DEDENT>message['<STR_LIT>'] = msg_list[<NUM_LIT:4>:]<EOL>return message<EOL>
Unserialize a msg_list to a nested message dict.

        This is roughly the inverse of serialize. The serialize/unserialize
        methods work with full message lists, whereas pack/unpack work with
        the individual message parts in the message list.

        Parameters:
        -----------
        msg_list : list of bytes or Message objects
            The list of message parts of the form [HMAC,p_header,p_parent,
            p_content,buffer1,buffer2,...].
        content : bool (True)
            Whether to unpack the content dict (True), or leave it packed
            (False).
        copy : bool (True)
            Whether to return the bytes (True), or the non-copying Message
            object in each place (False).

        Returns
        -------
        msg : dict
            The nested message dict with top-level keys [header, parent_header,
            content, buffers].