/// <summary>
        ///    <para>Provides a clone of the object</para>
        /// </summary>
        /// <returns>
        ///    The new clone object
        /// </returns>
        public virtual Object Clone()
        {
            Initialize();
            IWbemClassObjectFreeThreaded theClone = null;
            int status = (int)ManagementStatus.NoError;

            status = wbemObject.Clone_(out theClone);

            if (status < 0)
            {
                if ((status & 0xfffff000) == 0x80041000)
                {
                    ManagementException.ThrowWithExtendedInfo((ManagementStatus)status);
                }
                else
                {
                    Marshal.ThrowExceptionForHR(status);
                }
            }

            return(new ManagementBaseObject(theClone));
        }