async def dump_tuple(self, elem, elem_type, params=None):
if len(elem) != len(elem_type.f_specs()):<EOL><INDENT>raise ValueError('<STR_LIT>' % len(elem_type.f_specs()))<EOL><DEDENT>elem_fields = params[<NUM_LIT:0>] if params else None<EOL>if elem_fields is None:<EOL><INDENT>elem_fields = elem_type.f_specs()<EOL><DEDENT>for idx, elem in enumerate(elem):<EOL><INDENT>try:<EOL><INDENT>self.tracker.push_index(idx)<EOL>await self._dump_field(elem, elem_fields[idx], params[<NUM_LIT:1>:] if params else None)<EOL>self.tracker.pop()<EOL><DEDENT>except Exception as e:<EOL><INDENT>raise helpers.ArchiveException(e, tracker=self.tracker) from e<EOL><DEDENT><DEDENT>
Dumps tuple of elements to the writer.

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