/// <summary>
        /// Create a copy of the configuration
        /// </summary>
        public ConfigurationOptions Clone()
        {
            var options = new ConfigurationOptions
            {
                clientName                    = clientName,
                serviceName                   = serviceName,
                keepAlive                     = keepAlive,
                syncTimeout                   = syncTimeout,
                allowAdmin                    = allowAdmin,
                defaultVersion                = defaultVersion,
                connectTimeout                = connectTimeout,
                password                      = password,
                tieBreaker                    = tieBreaker,
                writeBuffer                   = writeBuffer,
                ssl                           = ssl,
                sslHost                       = sslHost,
                configChannel                 = configChannel,
                abortOnConnectFail            = abortOnConnectFail,
                resolveDns                    = resolveDns,
                proxy                         = proxy,
                commandMap                    = commandMap,
                CertificateValidationCallback = CertificateValidationCallback,
                CertificateSelectionCallback  = CertificateSelectionCallback,
                ChannelPrefix                 = ChannelPrefix.Clone(),
                SocketManager                 = SocketManager,
                connectRetry                  = connectRetry
            };

            foreach (var item in endpoints)
            {
                options.endpoints.Add(item);
            }
            return(options);
        }
        /// <summary>
        /// Create a copy of the configuration
        /// </summary>
        public ConfigurationOptions Clone()
        {
            var options = new ConfigurationOptions
            {
                ClientName                    = ClientName,
                ServiceName                   = ServiceName,
                keepAlive                     = keepAlive,
                syncTimeout                   = syncTimeout,
                asyncTimeout                  = asyncTimeout,
                allowAdmin                    = allowAdmin,
                defaultVersion                = defaultVersion,
                connectTimeout                = connectTimeout,
                User                          = User,
                Password                      = Password,
                tieBreaker                    = tieBreaker,
                writeBuffer                   = writeBuffer,
                ssl                           = ssl,
                sslHost                       = sslHost,
                highPrioritySocketThreads     = highPrioritySocketThreads,
                configChannel                 = configChannel,
                abortOnConnectFail            = abortOnConnectFail,
                resolveDns                    = resolveDns,
                proxy                         = proxy,
                commandMap                    = commandMap,
                CertificateValidationCallback = CertificateValidationCallback,
                CertificateSelectionCallback  = CertificateSelectionCallback,
                ChannelPrefix                 = ChannelPrefix.Clone(),
                SocketManager                 = SocketManager,
                connectRetry                  = connectRetry,
                configCheckSeconds            = configCheckSeconds,
                responseTimeout               = responseTimeout,
                DefaultDatabase               = DefaultDatabase,
                ReconnectRetryPolicy          = reconnectRetryPolicy,
                SslProtocols                  = SslProtocols,
                checkCertificateRevocation    = checkCertificateRevocation,
                ResolveRegionalDNS            = ResolveRegionalDNS
            };

            foreach (var item in EndPoints)
            {
                options.EndPoints.Add(item);
            }
            return(options);
        }
        /// <summary>
        /// Create a copy of the configuration
        /// </summary>
        public ConfigurationOptions Clone()
        {
            var options = new ConfigurationOptions
            {
                clientName                    = clientName,
                serviceName                   = serviceName,
                keepAlive                     = keepAlive,
                syncTimeout                   = syncTimeout,
                allowAdmin                    = allowAdmin,
                defaultVersion                = defaultVersion,
                connectTimeout                = connectTimeout,
                password                      = password,
                tieBreaker                    = tieBreaker,
                writeBuffer                   = writeBuffer,
                ssl                           = ssl,
                sslHost                       = sslHost,
                highPrioritySocketThreads     = highPrioritySocketThreads,
                configChannel                 = configChannel,
                abortOnConnectFail            = abortOnConnectFail,
                resolveDns                    = resolveDns,
                proxy                         = proxy,
                commandMap                    = commandMap,
                CertificateValidationCallback = CertificateValidationCallback,
                CertificateSelectionCallback  = CertificateSelectionCallback,
                ChannelPrefix                 = ChannelPrefix.Clone(),
                SocketManager                 = SocketManager,
                connectRetry                  = connectRetry,
                configCheckSeconds            = configCheckSeconds,
                responseTimeout               = responseTimeout,
                defaultDatabase               = defaultDatabase,
                ReconnectRetryPolicy          = reconnectRetryPolicy,
                preserveAsyncOrder            = preserveAsyncOrder,
#if !CORE_CLR
                SslProtocols = SslProtocols,
#endif
            };

            foreach (var item in endpoints)
            {
                options.endpoints.Add(item);
            }
            return(options);
        }