docs: def deserialize(self):
          """Turns a sequence of bytes into a message dictionary."""
          if self.msgbytes is None:
              raise LLRPError('No message bytes to deserialize.')
          data = self.msgbytes
          msgtype, length, msgid = struct.unpack(self.full_hdr_fmt,
                                                 data[:self.full_hdr_len])
          ver = (msgtype >> 10) & BITMASK(3)
          msgtype = msgtype & BITMASK(10)
          try:
              name = Message_Type2Name[msgtype]
              logger.debug('deserializing %s command', name)
              decoder = Message_struct[name]['decode']
          except KeyError:
              raise LLRPError('Cannot find decoder for message type '
                              '{}'.format(msgtype))
          body = data[self.full_hdr_len:length]
          try:
              self.msgdict = {
                  name: dict(decoder(body))
              }
              self.msgdict[name]['Ver'] = ver
              self.msgdict[name]['Type'] = msgtype
              self.msgdict[name]['ID'] = msgid
              logger.debug('done deserializing %s command', name)
          except ValueError:
              logger.exception('Unable to decode body %s, %s', body,
                      decoder(body))
          except LLRPError:
              logger.exception('Problem with %s message format', name)
              return ''
          return ''