public void remove() {Object[] a = array;int removalIdx = removalIndex;if (modCount != expectedModCount) {throw new ConcurrentModificationException();}if (removalIdx < 0) {throw new IllegalStateException();}System.arraycopy(a, removalIdx + 1, a, removalIdx, remaining);a[--size] = null;  removalIndex = -1;expectedModCount = ++modCount;}
public virtual void remove(){object[] a = this._enclosing.array;int removalIdx = this.removalIndex;if (this._enclosing.modCount != this.expectedModCount){throw new java.util.ConcurrentModificationException();}if (removalIdx < 0){throw new System.InvalidOperationException();}System.Array.Copy(a, removalIdx + 1, a, removalIdx, this.remaining);a[--this._enclosing._size] = null;this.removalIndex = -1;this.expectedModCount = ++this._enclosing.modCount;}