code: async def container_load(self, container_type, params=None, container=None, obj=None):
          
          if isinstance(obj, IModel):
              obj = obj.val
  
          if obj is None:
              return NoSetSentinel()
  
          c_len = len(obj)
          elem_type = params[0] if params else None
          if elem_type is None:
              elem_type = container_type.ELEM_TYPE
  
          res = container if container else []
          for i in range(c_len):
              try:
                  self.tracker.push_index(i)
                  fvalue = await self._load_field(elem_type,
                                                  params[1:] if params else None,
                                                  x.eref(res, i) if container else None, obj=obj[i])
                  self.tracker.pop()
  
              except Exception as e:
                  raise helpers.ArchiveException(e, tracker=self.tracker) from e
  
              if not container and not isinstance(fvalue, NoSetSentinel):
                  res.append(fvalue)
  
          return res
docs: Loads container of elements from the reader. Supports the container ref.
          Returns loaded container.
  
          :param container_type:
          :param params:
          :param container:
          :param obj:
          :return: