@Override public void add(int index, E object) {synchronized (CopyOnWriteArrayList.this) {slice.checkPositionIndex(index);slice.checkConcurrentModification(elements);CopyOnWriteArrayList.this.add(index + slice.from, object);slice = new Slice(elements, slice.from, slice.to + 1);}}

public virtual void add(int index, E e){lock (this){object[] newElements = new object[elements.Length + 1];System.Array.Copy(elements, 0, newElements, 0, index);newElements[index] = e;System.Array.Copy(elements, index, newElements, index + 1, elements.Length - index);elements = newElements;}}
