async def _dump_tuple(self, writer, elem, elem_type, params=None):
        """
        Dumps tuple of elements to the writer.

        :param writer:
        :param elem:
        :param elem_type:
        :param params:
        :return:
        """
        if len(elem) != len(elem_type.f_specs()):
            raise ValueError(
                "Fixed size tuple has not defined size: %s" % len(elem_type.f_specs())
            )
        await dump_uvarint(writer, len(elem))

        elem_fields = params[0] if params else None
        if elem_fields is None:
            elem_fields = elem_type.f_specs()
        for idx, elem in enumerate(elem):
            try:
                self.tracker.push_index(idx)
                await self.dump_field(
                    writer, elem, elem_fields[idx], params[1:] if params else None
                )
                self.tracker.pop()
            except Exception as e:
                raise helpers.ArchiveException(e, tracker=self.tracker) from e
Dumps tuple of elements to the writer.

        :param writer:
        :param elem:
        :param elem_type:
        :param params:
        :return: