///// <summary>
        ///// Not implemented.
        ///// </summary>
        ///// <param name="pszMessage">The window title.</param>
        ///// <exception cref="ObjectDisposedException">Exception thrown when this object is disposed.</exception>
        ///// <exception cref="Win32Exception">Exception thrown when this method fails because of an error in the Win32 COM API implementation.</exception>
        //public void SetProgressMessage(string pszMessage) =>

        //    //if (disposed) throw new ObjectDisposedException(nameof(FileOperation));

        //    //HResult hr = fileOperation.SetProgressMessage(pszMessage);

        //    //if (!CoreErrorHelper.Succeeded(hr))

        //    //    Marshal.ThrowExceptionForHR((int)hr);

        //    throw new NotImplementedException();

        // todo: to encapsulate

        /// <summary>
        /// Specifies a dialog box used to display the progress of the operation.
        /// </summary>
        /// <param name="popd">An <see cref="IOperationsProgressDialog"/> object that represents the dialog box.</param>
        /// <exception cref="ArgumentNullException">Exception thrown when a parameter is null.</exception>
        /// <exception cref="Win32Exception">Exception thrown when this method fails because of an error in the Win32 COM API implementation.</exception>
        public void SetProgressDialog(IOperationsProgressDialog popd)
        {
            ThrowIfNull(popd, nameof(popd));

            if (disposed)
            {
                throw new ObjectDisposedException(nameof(FileOperation));
            }

            HResult hr = fileOperation.SetProgressDialog(popd);

            if (!CoreErrorHelper.Succeeded(hr))
            {
                Marshal.ThrowExceptionForHR((int)hr);
            }
        }