async def _load_container(<EOL>self, reader, container_type, params=None, container=None<EOL>):
c_len = (<EOL>container_type.SIZE<EOL>if container_type.FIX_SIZE<EOL>else await load_uvarint(reader)<EOL>)<EOL>if container and get_elem(container) and c_len != len(container):<EOL><INDENT>raise ValueError("<STR_LIT>")<EOL><DEDENT>elem_type = container_elem_type(container_type, params)<EOL>res = container if container else []<EOL>for i in range(c_len):<EOL><INDENT>try:<EOL><INDENT>self.tracker.push_index(i)<EOL>fvalue = await self.load_field(<EOL>reader,<EOL>elem_type,<EOL>params[<NUM_LIT:1>:] if params else None,<EOL>eref(res, i) if container else None,<EOL>)<EOL>self.tracker.pop()<EOL><DEDENT>except Exception as e:<EOL><INDENT>raise helpers.ArchiveException(e, tracker=self.tracker) from e<EOL><DEDENT>if not container:<EOL><INDENT>res.append(fvalue)<EOL><DEDENT><DEDENT>return res<EOL>
Loads container of elements from the reader. Supports the container ref.
Returns loaded container.

:param reader:
:param container_type:
:param params:
:param container:
:return: