@Override
  public boolean addAll(int index, @NotNull Collection<? extends E> c) throws IndexOutOfBoundsException {
    Object[] cs = c.toArray();
    if (cs.length == 0) {
      return false;
    }

    while (true) {
      Object[] elements = get();
      Object[] newElements = createArrayAddAll(elements, index, cs);
      if (replaceArray(elements, newElements)) break;
    }

    return true;
  }
@Override
  public boolean addAll(int index, @NotNull Collection<? extends E> c)