@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;}}

@ 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;}}
