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