public override IEnumerable <StreamExtent> GetExtentsInRange(long start, long count) { CheckDisposed(); long maxCount = Math.Min(Length, start + count) - start; if (maxCount < 0) { return(new StreamExtent[0]); } var parentExtents = _parentDiskStream.GetExtentsInRange(_diskOffset + start, maxCount); parentExtents = StreamExtent.Offset(parentExtents, -_diskOffset); var result = StreamExtent.Union(LayerExtents(start, maxCount), parentExtents); result = StreamExtent.Intersect(result, new StreamExtent[] { new StreamExtent(start, maxCount) }); return(result); }