async def tuple(self, elem=None, elem_type=None, params=None):
version = await self.version(elem_type, params, elem=elem)<EOL>if self.is_tracked():<EOL><INDENT>return self.get_tracked()<EOL><DEDENT>if hasattr(elem_type, '<STR_LIT>'):<EOL><INDENT>container = elem_type() if elem is None else elem<EOL>self.pop_track()<EOL>return await container.boost_serialize(self, elem=elem, elem_type=elem_type, params=params, version=version)<EOL><DEDENT>if self.writing:<EOL><INDENT>self.pop_track()<EOL>return await self.dump_tuple(elem, elem_type, params)<EOL><DEDENT>else:<EOL><INDENT>obj = await self.load_tuple(elem_type, params=params, elem=elem)<EOL>return self.track_obj(obj)<EOL><DEDENT>
Loads/dumps tuple
:return: