async def field(self, elem=None, elem_type=None, params=None, obj=None):
elem_type = elem_type if elem_type else elem.__class__<EOL>fvalue = None<EOL>src = elem if self.writing else obj<EOL>dst = obj if self.writing else elem<EOL>if x.is_type(elem_type, BlobFieldWrapper):<EOL><INDENT>blobber = Blobber(self.writing, data=x.get_elem(src) if not self.writing else None)<EOL>fvalue = await blobber.blobize(elem=x.get_elem(src), elem_type=elem_type.ftype, params=params)<EOL>fvalue = NoSetSentinel() if fvalue is None or len(fvalue) == <NUM_LIT:0> else fvalue<EOL><DEDENT>elif issubclass(elem_type, x.UVarintType):<EOL><INDENT>fvalue = await self.uvarint(x.get_elem(src))<EOL><DEDENT>elif issubclass(elem_type, x.IntType):<EOL><INDENT>fvalue = await self.uint(elem=x.get_elem(src), elem_type=elem_type, params=params)<EOL><DEDENT>elif issubclass(elem_type, x.BlobType):<EOL><INDENT>fvalue = await self.blob(elem=x.get_elem(src), elem_type=elem_type, params=params)<EOL><DEDENT>elif issubclass(elem_type, x.UnicodeType):<EOL><INDENT>fvalue = await self.unicode_type(x.get_elem(src))<EOL><DEDENT>elif issubclass(elem_type, x.VariantType):<EOL><INDENT>fvalue = await self.variant(elem=x.get_elem(src), elem_type=elem_type, params=params, obj=dst)<EOL><DEDENT>elif issubclass(elem_type, x.ContainerType):  <EOL><INDENT>fvalue = await self.container(container=x.get_elem(src), container_type=elem_type, params=params, obj=dst)<EOL><DEDENT>elif issubclass(elem_type, x.TupleType):  <EOL><INDENT>fvalue = await self.tuple(elem=x.get_elem(src), elem_type=elem_type, params=params, obj=dst)<EOL><DEDENT>elif issubclass(elem_type, x.MessageType):<EOL><INDENT>fvalue = await self.message(x.get_elem(src), msg_type=elem_type, obj=dst)<EOL><DEDENT>else:<EOL><INDENT>raise TypeError<EOL><DEDENT>return x.set_elem(dst, fvalue) if not isinstance(fvalue, NoSetSentinel) else fvalue<EOL>
Archive field
:param elem:
:param elem_type:
:param params:
:param obj:
:return: