code: def _container_getitem(instance, elts, index, context=None):
      
      try:
          if isinstance(index, Slice):
              index_slice = _infer_slice(index, context=context)
              new_cls = instance.__class__()
              new_cls.elts = elts[index_slice]
              new_cls.parent = instance.parent
              return new_cls
          if isinstance(index, Const):
              return elts[index.value]
      except IndexError as exc:
          raise exceptions.AstroidIndexError(
              message="Index {index!s} out of range",
              node=instance,
              index=index,
              context=context,
          ) from exc
      except TypeError as exc:
          raise exceptions.AstroidTypeError(
              message="Type error {error!r}", node=instance, index=index, context=context
          ) from exc
  
      raise exceptions.AstroidTypeError("Could not use %s as subscript index" % index)
docs: Get a slice or an item, using the given *index*, for the given sequence.