/// <inheritdoc />
        public override VolumeSliceCollection GetSliceRanges(IReadOnlyCollection <VolumeSliceRangeDefinition> ranges, IProgress <VolumeSliceDefinition> progress = null, CancellationToken ct = default(CancellationToken))
        {
            if (ranges == null)
            {
                throw new ArgumentNullException(nameof(ranges));
            }

            if (ranges.Count == 0)
            {
                return(new VolumeSliceCollection());
            }

            return(new VolumeSliceCollection(ranges.Select(range => VolumeSliceRange.Extract(range, Metadata, Data))));
        }
 /// <inheritdoc />
 public override VolumeSliceRange GetSliceRange(VolumeSliceRangeDefinition range, IProgress <VolumeSliceDefinition> progress = null, CancellationToken ct = default(CancellationToken))
 {
     return(VolumeSliceRange.Extract(range, Metadata, Data));
 }