/// <summary>
        /// Copy strided data from a source array into a single destination sliver.
        /// </summary>
        public override void AppendSliver(TValue[] source, int startOffset, int width, int stride, int height)
        {
            HoloDebug.Assert(source != null);
            int neededLength = startOffset + stride * (height - 1) + width;

            HoloDebug.Assert(source.Length >= neededLength);
            HoloDebug.Assert(SliverSize == width * height);
            HoloDebug.Assert(stride >= width);

            EnsureFreeBuffer();

            Slice <TTime, TValue> destination = _remainingFreeBuffer.SubsliceOfDuration(1);

            int sourceOffset      = startOffset;
            int destinationOffset = 0;

            for (int h = 0; h < height; h++)
            {
                destination.CopyFrom(source, sourceOffset, destinationOffset, width);

                sourceOffset      += stride;
                destinationOffset += width;
            }

            InternalAppend(destination);

            Trim();
        }