@Override public E remove(int index) {synchronized (CopyOnWriteArrayList.this) {slice.checkElementIndex(index);slice.checkConcurrentModification(elements);E removed = CopyOnWriteArrayList.this.remove(slice.from + index);slice = new Slice(elements, slice.from, slice.to - 1);return removed;}}
public virtual E remove(int index){lock (this){E removed = (E)elements[index];removeRange(index, index + 1);return removed;}}