code: async def message_field(self, msg, field, fvalue=None, obj=None):
          
          fname, ftype, params = field[0], field[1], field[2:]
          try:
              self.tracker.push_field(fname)
              if self.writing:
                  fvalue = getattr(msg, fname, None) if fvalue is None else fvalue
                  await self._dump_field(fvalue, ftype, params)
  
              else:
                  await self._load_field(ftype, params, x.eref(msg, fname))
  
              self.tracker.pop()
  
          except Exception as e:
              raise helpers.ArchiveException(e, tracker=self.tracker) from e
docs: Dumps/Loads message field
          :param msg:
          :param field:
          :param fvalue: explicit value for dump
          :param obj:
          :return: