code: def add_all_at(self, index, items):
          
          check_not_none(items, "Value can't be None")
          data_items = []
          for item in items:
              check_not_none(item, "Value can't be None")
              data_items.append(self._to_data(item))
          return self._encode_invoke(list_add_all_with_index_codec, index=index, value_list=data_items)
docs: Adds all of the elements in the specified collection into this list at the specified position. Elements in this
          positions and following elements are shifted to the right, if any. The order of new elements is determined by the
          specified collection's iterator.
  
          :param index: (int), the specified index at which the first element of specified collection is added.
          :param items: (Collection), the specified collection which includes the elements to be added to list.
          :return: (bool), ``true`` if this call changed the list, ``false`` otherwise.