async def container(self, container=None, container_type=None, params=None):
<EOL>elem_type = x.container_elem_type(container_type, params)<EOL>raw_container = container_is_raw(container_type, params)<EOL>elem_elementary = TypeWrapper.is_elementary_type(elem_type)<EOL>is_versioned = not elem_elementary and not raw_container<EOL>version = None<EOL>if is_versioned:<EOL><INDENT>version = await self.version(container_type, params, elem=container)<EOL>if self.is_tracked():<EOL><INDENT>return self.get_tracked()<EOL><DEDENT><DEDENT>if hasattr(container_type, '<STR_LIT>'):<EOL><INDENT>container = container_type() if container is None else container<EOL>self.pop_track(is_versioned)<EOL>return await container.boost_serialize(self, elem=container, elem_type=container_type, params=params, version=version)<EOL><DEDENT>if self.writing:<EOL><INDENT>self.pop_track(is_versioned)<EOL>return await self.container_dump(container, container_type, params)<EOL><DEDENT>else:<EOL><INDENT>obj = await self.container_load(container_type, params=params, container=container)<EOL>return self.track_obj(obj, is_versioned)<EOL><DEDENT>
Loads/dumps container
:return: