async def field(self, elem=None, elem_type=None, params=None):
        """
        Archive field
        :param elem:
        :param elem_type:
        :param params:
        :return:
        """
        elem_type = elem_type if elem_type else elem.__class__
        fvalue = None

        src = elem
        if issubclass(elem_type, x.UVarintType):
            fvalue = await self.uvarint(x.get_elem(src))

        elif issubclass(elem_type, x.IntType):
            fvalue = await self.uint(elem=x.get_elem(src), elem_type=elem_type, params=params)

        elif issubclass(elem_type, x.BlobType):
            fvalue = await self.blob(elem=x.get_elem(src), elem_type=elem_type, params=params)

        elif issubclass(elem_type, x.UnicodeType):
            fvalue = await self.unicode_type(x.get_elem(src))

        elif issubclass(elem_type, x.VariantType):
            fvalue = await self.variant(elem=x.get_elem(src), elem_type=elem_type, params=params)

        elif issubclass(elem_type, x.ContainerType):  # container ~ simple list
            fvalue = await self.container(container=x.get_elem(src), container_type=elem_type, params=params)

        elif issubclass(elem_type, x.TupleType):  # tuple ~ simple list
            fvalue = await self.tuple(elem=x.get_elem(src), elem_type=elem_type, params=params)

        elif issubclass(elem_type, x.MessageType):
            fvalue = await self.message(x.get_elem(src), msg_type=elem_type)

        else:
            raise TypeError

        return fvalue if self.writing else x.set_elem(elem, fvalue)
async def field ( self , elem = None , elem_type = None , params = None ) : elem_type = elem_type if elem_type else elem . __class__ fvalue = None src = elem if issubclass ( elem_type , x . UVarintType ) : fvalue = await self . uvarint ( x . get_elem ( src ) ) elif issubclass ( elem_type , x . IntType ) : fvalue = await self . uint ( elem = x . get_elem ( src ) , elem_type = elem_type , params = params ) elif issubclass ( elem_type , x . BlobType ) : fvalue = await self . blob ( elem = x . get_elem ( src ) , elem_type = elem_type , params = params ) elif issubclass ( elem_type , x . UnicodeType ) : fvalue = await self . unicode_type ( x . get_elem ( src ) ) elif issubclass ( elem_type , x . VariantType ) : fvalue = await self . variant ( elem = x . get_elem ( src ) , elem_type = elem_type , params = params ) elif issubclass ( elem_type , x . ContainerType ) : fvalue = await self . container ( container = x . get_elem ( src ) , container_type = elem_type , params = params ) elif issubclass ( elem_type , x . TupleType ) : fvalue = await self . tuple ( elem = x . get_elem ( src ) , elem_type = elem_type , params = params ) elif issubclass ( elem_type , x . MessageType ) : fvalue = await self . message ( x . get_elem ( src ) , msg_type = elem_type ) else : raise TypeError return fvalue if self . writing else x . set_elem ( elem , fvalue )
Archive field
        :param elem:
        :param elem_type:
        :param params:
        :return: