++modCount; if (targetIndex >= size) throw new IndexOutOfBoundsException("targetIndex=" + targetIndex + ", size=" + size);  if (sourceIndex >= size) throw new IndexOutOfBoundsException("sourceIndex=" + sourceIndex + ", size=" + size);  Object object = data[sourceIndex]; if (targetIndex != sourceIndex) { if (targetIndex < sourceIndex) { System.arraycopy(data, targetIndex, data, targetIndex + 1, sourceIndex - targetIndex); } else { System.arraycopy(data, sourceIndex + 1, data, sourceIndex, targetIndex - sourceIndex); } assign(targetIndex, object); didMove(targetIndex, object, sourceIndex); didChange(); } return object;
move(index, indexOf(object));
  public Object move(int targetIndex, int sourceIndex)  {    ++modCount;    if (targetIndex >= size)      throw new IndexOutOfBoundsException("targetIndex=" + targetIndex + ", size=" + size);    if (sourceIndex >= size)      throw new IndexOutOfBoundsException("sourceIndex=" + sourceIndex + ", size=" + size);    Object object = data[sourceIndex];    if (targetIndex != sourceIndex)    {      if (targetIndex < sourceIndex)      {        System.arraycopy(data, targetIndex, data, targetIndex + 1, sourceIndex - targetIndex);      }      else      {        System.arraycopy(data, sourceIndex + 1, data, sourceIndex, targetIndex - sourceIndex);      }      assign(targetIndex, object);      didMove(targetIndex, object, sourceIndex);      didChange();    }    return object;  }