public override void RemoveAt(int index)
{
if (index < 0 || index >= _baseSize) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index);
Contract.EndContractBlock();
InternalUpdateRange();
_baseList.RemoveAt(_baseIndex + index);
InternalUpdateVersion();
_baseSize--;
}