public override int IndexOf(Object value, int startIndex, int count)
{
if (startIndex < 0 || startIndex > _baseSize)
throw new ArgumentOutOfRangeException(nameof(startIndex), SR.ArgumentOutOfRange_Index);
if (count < 0 || (startIndex > _baseSize - count))
throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_Count);
Contract.EndContractBlock();
InternalUpdateRange();
int i = _baseList.IndexOf(value, _baseIndex + startIndex, count);
if (i >= 0) return i - _baseIndex;
return -1;
}