void CheckOffsetAndRealized (GeneratorPosition position, int count)
{
if (position.Offset != 0)
throw new ArgumentException ("position.Offset must be zero as the position must refer to a realized element");
int index = IndexFromGeneratorPosition (position);
int rangeIndex = RealizedElements.FindRangeIndexForValue (index);
RangeCollection.Range range = RealizedElements.Ranges[rangeIndex];
if (index < range.Start || (index + count) > range.Start + range.Count)
throw new InvalidOperationException ("Only items which have been Realized can be removed");
}