/// <summary>
        /// This method will invoke a CDS browse request and provide the results
        /// directly the application-caller.
        /// <para>
        /// Implementation simply calls the parent owner's implementation of
        /// <see cref="CpMediaContainer.RequestBrowse "/>(ICpMedia, CpContentDirectory.Enum_A_ARG_TYPE_BrowseFlag, string, uint, uint, string).
        /// </para>
        /// </summary>
        /// <param name="BrowseFlag">browse metadata or direct children</param>
        /// <param name="Filter">
        /// Comma-separated value list of metadata names to include
        /// in the response. For all metadata, use * character.
        /// </param>
        /// <param name="StartingIndex">
        /// If obtaining children, the start index of the results.
        /// Otherwise set to zero.
        /// </param>
        /// <param name="RequestedCount">
        /// If obtaining children the max number of child objects
        /// to retrieve. Otherwise use zero.
        /// </param>
        /// <param name="SortCriteria">
        /// Comma-separated value list of metadata names to use for
        /// sorting, such that preceding each metadata name (but after
        /// the comma) a + or - character is present to indicate
        /// ascending or descending sort order for that property.
        /// </param>
        /// <param name="Tag">
        /// Miscellaneous, user-provided object for tracking this
        /// asynchronous call. Can be used as a means to pass a
        /// user-defined "state object" at invoke-time so that
        /// the executed callback during results-processing can be
        /// aware of the component's state at the time of the call.
        /// </param>
        /// <param name="callback">the callback to execute when results become available</param>
        /// <exception cref="ApplicationException">
        /// Thrown if the BrowseFlag value is BrowseDirectChildren because only the
        /// object's metadata can be obtained use browse.
        /// </exception>
        public void RequestBrowse(CpContentDirectory.Enum_A_ARG_TYPE_BrowseFlag BrowseFlag, string Filter, uint StartingIndex, uint RequestedCount, string SortCriteria, object Tag, CpMediaDelegates.Delegate_ResultBrowse callback)
        {
            if (BrowseFlag == CpContentDirectory.Enum_A_ARG_TYPE_BrowseFlag.BROWSEDIRECTCHILDREN)
            {
                throw new ApplicationException("BrowseFlag cannot be BROWSEDIRECTCHILDREN");
            }

            CpMediaContainer parent = (CpMediaContainer)this.Parent;

            parent.RequestBrowse(this, BrowseFlag, Filter, StartingIndex, RequestedCount, SortCriteria, Tag, callback);
        }