Inheritance: ILogMethodConfig
        /// <summary>
        /// Returns a <see cref="ILogServiceConfig"/> snapshot of the <see cref="ILogServiceConfig"/> set as parameter
        /// </summary>
        /// <param name="source"><see cref="ILogServiceConfig"/> to copy</param>
        /// <returns></returns>
        private static ILogServiceConfig Clone( ILogServiceConfig source )
        {
            LogEventConfig e;
            LogMethodConfig m;
            LogServiceConfig s;

            s = new LogServiceConfig( source.Name );

            s.DoLog = source.DoLog;

            foreach( ILogEventConfig eToCopy in source.Events )
            {
                e = new LogEventConfig( eToCopy.Name, new List<ILogParameterInfo>(), eToCopy.LogOptions, eToCopy.DoLog );
                foreach( ILogParameterInfo logParameterInfoToCopy in eToCopy.Parameters )
                    e.Parameters.Add( new LogParameterInfo( logParameterInfoToCopy.ParameterName, logParameterInfoToCopy.ParameterType ) );
                s.Events.Add( e );
            }

            foreach( ILogMethodConfig mToCopy in source.Methods )
            {
                m = new LogMethodConfig( mToCopy.Name, mToCopy.ReturnType, new List<ILogParameterInfo>(), mToCopy.LogOptions, mToCopy.DoLog );
                foreach( ILogParameterInfo parameterToCopy in mToCopy.Parameters )
                    m.Parameters.Add( new LogParameterInfo( parameterToCopy.ParameterName, parameterToCopy.ParameterType ) );
                s.Methods.Add( m );
            }

            foreach( ILogPropertyConfig pToCopy in source.Properties )
                s.Properties.Add( new LogPropertyConfig( pToCopy.PropertyType, pToCopy.Name, pToCopy.DoLogErrors, pToCopy.LogFilter, pToCopy.DoLog ) );

            return s;
        }