/// <summary>
        /// Constructs a new <see cref="SopFrameData"/>.
        /// </summary>
        /// <param name="frameNumber">The 1-based number of this frame.</param>
        /// <param name="parent">The parent <see cref="ISopDataSource"/> that this frame belongs to.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="parent"/> is null.</exception>
        /// <exception cref="ArgumentOutOfRangeException">Thrown if <paramref name="frameNumber"/> is zero or negative.</exception>
        protected SopFrameData(int frameNumber, SopDataSource parent)
        {
            Platform.CheckForNullReference(parent, "parent");
            Platform.CheckPositive(frameNumber, "frameNumber");

            _parent      = parent;
            _frameNumber = frameNumber;
        }
        /// <summary>
        /// Loads the next <see cref="Sop"/>.
        /// </summary>
        /// <returns>The next <see cref="Sop"/> or <b>null</b> if there are none remaining.</returns>
        /// <remarks>
        /// Implementers of <see cref="IStudyLoader"/> should avoid loading pixel data
        /// in this method for performance reasons.
        /// </remarks>
        public Sop LoadNextSop()
        {
            SopDataSource dataSource = LoadNextSopDataSource();

            if (dataSource == null)
            {
                _currentServer = null;
                return(null);
            }

            dataSource.Server = _currentServer;
            return(CreateSop(dataSource));
        }