public override IEnumerable <T> ReadFrom(long index) { long chunkNumber = index / chunkSize; IEnumerator <T[]> chunks = chunkList.ReadFrom(chunkNumber).GetEnumerator(); T[] arrayChunk = null; while (index < count) { long numberInChunk = index % chunkSize; if (numberInChunk == 0 || arrayChunk == null) { chunks.MoveNext(); arrayChunk = chunks.Current; } yield return(arrayChunk[numberInChunk]); index++; } }