docs: def des(clas,keyblob,valblob):
      "deserialize. translate publish message, basically"
      raise NotImplementedError("don't use tuples, it breaks __eq__. this function probably isn't used in real life")
      raw_keyvals=msgpack.loads(keyblob)
      (namespace,version),keyvals=raw_keyvals[:2],raw_keyvals[2:]
      if namespace!=clas.NAMESPACE or version!=clas.VERSION:
        raise TypeError('des_mismatch got %s want %s'%((namespace,version),(clas.NAMESPACE,clas.VERSION)))
      vals=tuple(msgpack.loads(valblob))
      clas.type_check(zip(*clas.KEY)[1],keyvals,'KEY')
      clas.type_check(zip(*clas.VALUE)[1],vals,'VALUE')
      return clas(tuple(keyvals),vals)