public virtual void RemoveRange(int index, int count)
{
if (index < 0)
throw new ArgumentOutOfRangeException("index", index, "Argument cannot be negative.");
if (count < 0)
throw new ArgumentOutOfRangeException("count", count, "Argument cannot be negative.");
if (index + count > _data.Count)
throw new ArgumentException("Arguments denote invalid range of elements.");
if (count == 0) return;
_data.Count -= count;
if (index < _data.Count)
Array.Copy(_data.Items, index + count, _data.Items, index, _data.Count - index);
Array.Clear(_data.Items, _data.Count, count);
}