code: async def blob(self, elem=None, elem_type=None, params=None):
          
          elem_type = elem_type if elem_type else elem.__class__
          if hasattr(elem_type, 'kv_serialize'):
              elem = elem_type() if elem is None else elem
              return await elem.kv_serialize(self, elem=elem, elem_type=elem_type, params=params)
  
          if self.writing:
              elem_is_blob = isinstance(elem, x.BlobType)
              data = getattr(elem, x.BlobType.DATA_ATTR) if elem_is_blob else elem
              if data is None:
                  return NoSetSentinel()
              if len(data) == 0:
                  return b''
  
              fval = Modeler.to_bytes(data)
              if self.hexlify:
                  return binascii.hexlify(fval).decode('ascii')
              else:
                  return fval
  
          else:
              if elem is None:
                  return NoSetSentinel()
              if self.hexlify:
                  return bytes(binascii.unhexlify(elem))
              else:
                  return bytes(elem)
docs: Loads/dumps blob
          :return: