@Override
  public boolean equals(final Object obj) {
    if (this == obj) {
      return true;
    }

    if (obj == null || getClass() != obj.getClass()) {
      return false;
    }

    final DistributionConfigImpl that = (DistributionConfigImpl) obj;

    return new EqualsBuilder().append(tcpPort, that.tcpPort).append(mcastPort, that.mcastPort)
        .append(mcastTtl, that.mcastTtl).append(socketLeaseTime, that.socketLeaseTime)
        .append(socketBufferSize, that.socketBufferSize)
        .append(conserveSockets, that.conserveSockets).append(locatorWaitTime, that.locatorWaitTime)
        .append(logLevel, that.logLevel).append(startLocatorPort, that.startLocatorPort)
        .append(statisticSamplingEnabled, that.statisticSamplingEnabled)
        .append(statisticSampleRate, that.statisticSampleRate)
        .append(ackWaitThreshold, that.ackWaitThreshold)
        .append(ackForceDisconnectThreshold, that.ackForceDisconnectThreshold)
        .append(archiveDiskSpaceLimit, that.archiveDiskSpaceLimit)
        .append(archiveFileSizeLimit, that.archiveFileSizeLimit)
        .append(logDiskSpaceLimit, that.logDiskSpaceLimit)
        .append(logFileSizeLimit, that.logFileSizeLimit)
        .append(clusterSSLEnabled, that.clusterSSLEnabled)
        .append(clusterSSLRequireAuthentication, that.clusterSSLRequireAuthentication)
        .append(mcastSendBufferSize, that.mcastSendBufferSize)
        .append(mcastRecvBufferSize, that.mcastRecvBufferSize)
        .append(udpSendBufferSize, that.udpSendBufferSize)
        .append(udpRecvBufferSize, that.udpRecvBufferSize)
        .append(udpFragmentSize, that.udpFragmentSize).append(disableTcp, that.disableTcp)
        .append(disableJmx, that.disableJmx)
        .append(enableTimeStatistics, that.enableTimeStatistics)
        .append(memberTimeout, that.memberTimeout)
        .append(maxWaitTimeForReconnect, that.maxWaitTimeForReconnect)
        .append(maxNumReconnectTries, that.maxNumReconnectTries)
        .append(asyncDistributionTimeout, that.asyncDistributionTimeout)
        .append(asyncQueueTimeout, that.asyncQueueTimeout)
        .append(asyncMaxQueueSize, that.asyncMaxQueueSize)
        .append(durableClientTimeout, that.durableClientTimeout)
        .append(securityLogLevel, that.securityLogLevel)
        .append(enableNetworkPartitionDetection, that.enableNetworkPartitionDetection)
        .append(disableAutoReconnect, that.disableAutoReconnect)
        .append(securityPeerMembershipTimeout, that.securityPeerMembershipTimeout)
        .append(removeUnresponsiveClient, that.removeUnresponsiveClient)
        .append(deltaPropagation, that.deltaPropagation)
        .append(distributedSystemId, that.distributedSystemId)
        .append(enforceUniqueHost, that.enforceUniqueHost)
        .append(enableSharedConfiguration, that.enableSharedConfiguration)
        .append(useSharedConfiguration, that.useSharedConfiguration)
        .append(loadSharedConfigurationFromDir, that.loadSharedConfigurationFromDir)
        .append(httpServicePort, that.httpServicePort).append(startDevRestApi, that.startDevRestApi)
        .append(memcachedPort, that.memcachedPort)
        .append(distributedTransactions, that.distributedTransactions)
        .append(jmxManager, that.jmxManager)
        .append(jmxManagerStart, that.jmxManagerStart).append(jmxManagerPort, that.jmxManagerPort)
        .append(jmxManagerHttpPort, that.jmxManagerHttpPort)
        .append(jmxManagerUpdateRate, that.jmxManagerUpdateRate)
        .append(jmxManagerSSLEnabled, that.jmxManagerSSLEnabled)
        .append(jmxManagerSslRequireAuthentication, that.jmxManagerSslRequireAuthentication)
        .append(serverSSLEnabled, that.serverSSLEnabled)
        .append(serverSslRequireAuthentication, that.serverSslRequireAuthentication)
        .append(gatewaySSLEnabled, that.gatewaySSLEnabled)
        .append(gatewaySslRequireAuthentication, that.gatewaySslRequireAuthentication)
        .append(httpServiceSSLEnabled, that.httpServiceSSLEnabled)
        .append(httpServiceSSLRequireAuthentication, that.httpServiceSSLRequireAuthentication)
        .append(sslRequireAuthentication, that.sslRequireAuthentication)
        .append(sslWebServiceRequireAuthentication, that.sslWebServiceRequireAuthentication)
        .append(lockMemory, that.lockMemory).append(modifiable, that.modifiable)
        .append(name, that.name).append(roles, that.roles).append(mcastAddress, that.mcastAddress)
        .append(bindAddress, that.bindAddress).append(serverBindAddress, that.serverBindAddress)
        .append(locators, that.locators).append(logFile, that.logFile)
        .append(deployWorkingDir, that.deployWorkingDir).append(startLocator, that.startLocator)
        .append(statisticArchiveFile, that.statisticArchiveFile)
        .append(cacheXmlFile, that.cacheXmlFile)
        .append(clusterSSLProtocols, that.clusterSSLProtocols)
        .append(clusterSSLCiphers, that.clusterSSLCiphers)
        .append(clusterSSLKeyStore, that.clusterSSLKeyStore)
        .append(clusterSSLKeyStoreType, that.clusterSSLKeyStoreType)
        .append(clusterSSLKeyStorePassword, that.clusterSSLKeyStorePassword)
        .append(clusterSSLTrustStore, that.clusterSSLTrustStore)
        .append(clusterSSLTrustStorePassword, that.clusterSSLTrustStorePassword)
        .append(clusterSSLAlias, that.clusterSSLAlias)
        .append(mcastFlowControl, that.mcastFlowControl)
        .append(membershipPortRange, that.membershipPortRange)
        .append(clientConflation, that.clientConflation)
        .append(durableClientId, that.durableClientId)
        .append(securityClientAuthInit, that.securityClientAuthInit)
        .append(securityClientAuthenticator, that.securityClientAuthenticator)
        .append(securityManager, that.securityManager).append(postProcessor, that.postProcessor)
        .append(securityClientDHAlgo, that.securityClientDHAlgo)
        .append(securityPeerAuthInit, that.securityPeerAuthInit)
        .append(securityPeerAuthenticator, that.securityPeerAuthenticator)
        .append(securityClientAccessor, that.securityClientAccessor)
        .append(securityClientAccessorPP, that.securityClientAccessorPP)
        .append(securityLogFile, that.securityLogFile).append(security, that.security)
        .append(userDefinedProps, that.userDefinedProps).append(props, that.props)
        .append(remoteLocators, that.remoteLocators).append(redundancyZone, that.redundancyZone)
        .append(sslProperties, that.sslProperties)
        .append(clusterSSLProperties, that.clusterSSLProperties).append(groups, that.groups)
        .append(clusterConfigDir, that.clusterConfigDir)
        .append(httpServiceBindAddress, that.httpServiceBindAddress)
        .append(memcachedProtocol, that.memcachedProtocol)
        .append(memcachedBindAddress, that.memcachedBindAddress)
        .append(jmxManagerBindAddress, that.jmxManagerBindAddress)
        .append(jmxManagerHostnameForClients, that.jmxManagerHostnameForClients)
        .append(jmxManagerPasswordFile, that.jmxManagerPasswordFile)
        .append(jmxManagerAccessFile, that.jmxManagerAccessFile)
        .append(jmxManagerSslProtocols, that.jmxManagerSslProtocols)
        .append(jmxManagerSslCiphers, that.jmxManagerSslCiphers)
        .append(jmxManagerSslProperties, that.jmxManagerSslProperties)
        .append(jmxManagerSSLKeyStore, that.jmxManagerSSLKeyStore)
        .append(jmxManagerSSLKeyStoreType, that.jmxManagerSSLKeyStoreType)
        .append(jmxManagerSSLKeyStorePassword, that.jmxManagerSSLKeyStorePassword)
        .append(jmxManagerSSLTrustStore, that.jmxManagerSSLTrustStore)
        .append(jmxManagerSSLTrustStorePassword, that.jmxManagerSSLTrustStorePassword)
        .append(jmxManagerSSLAlias, that.jmxManagerSSLAlias)
        .append(serverSslProtocols, that.serverSslProtocols)
        .append(serverSslCiphers, that.serverSslCiphers)
        .append(serverSslProperties, that.serverSslProperties)
        .append(serverSSLKeyStore, that.serverSSLKeyStore)
        .append(serverSSLKeyStoreType, that.serverSSLKeyStoreType)
        .append(serverSSLKeyStorePassword, that.serverSSLKeyStorePassword)
        .append(serverSSLTrustStore, that.serverSSLTrustStore)
        .append(serverSSLTrustStorePassword, that.serverSSLTrustStorePassword)
        .append(serverSSLAlias, that.serverSSLAlias)
        .append(gatewaySslProtocols, that.gatewaySslProtocols)
        .append(gatewaySslCiphers, that.gatewaySslCiphers)
        .append(gatewaySslProperties, that.gatewaySslProperties)
        .append(gatewaySSLKeyStore, that.gatewaySSLKeyStore)
        .append(gatewaySSLKeyStoreType, that.gatewaySSLKeyStoreType)
        .append(gatewaySSLKeyStorePassword, that.gatewaySSLKeyStorePassword)
        .append(gatewaySSLTrustStore, that.gatewaySSLTrustStore)
        .append(gatewaySSLTrustStorePassword, that.gatewaySSLTrustStorePassword)
        .append(gatewaySSLAlias, that.gatewaySSLAlias)
        .append(httpServiceSSLProtocols, that.httpServiceSSLProtocols)
        .append(httpServiceSSLCiphers, that.httpServiceSSLCiphers)
        .append(httpServiceSSLProperties, that.httpServiceSSLProperties)
        .append(httpServiceSSLKeyStore, that.httpServiceSSLKeyStore)
        .append(httpServiceSSLKeyStoreType, that.httpServiceSSLKeyStoreType)
        .append(httpServiceSSLKeyStorePassword, that.httpServiceSSLKeyStorePassword)
        .append(httpServiceSSLTrustStore, that.httpServiceSSLTrustStore)
        .append(httpServiceSSLTrustStorePassword, that.httpServiceSSLTrustStorePassword)
        .append(httpServiceSSLAlias, that.httpServiceSSLAlias)
        .append(securableCommunicationChannels, that.securableCommunicationChannels)
        .append(sslProtocols, that.sslProtocols).append(sslClientProtocols, that.sslClientProtocols)
        .append(sslServerProtocols, that.sslServerProtocols).append(sslCiphers, that.sslCiphers)
        .append(sslKeyStore, that.sslKeyStore).append(sslKeyStoreType, that.sslKeyStoreType)
        .append(sslKeyStorePassword, that.sslKeyStorePassword)
        .append(sslTrustStore, that.sslTrustStore)
        .append(sslTrustStorePassword, that.sslTrustStorePassword)
        .append(sslParameterExtension, that.sslParameterExtension)
        .append(locatorSSLAlias, that.locatorSSLAlias).append(sslDefaultAlias, that.sslDefaultAlias)
        .append(sourceMap, that.sourceMap).append(userCommandPackages, that.userCommandPackages)
        .append(offHeapMemorySize, that.offHeapMemorySize).append(shiroInit, that.shiroInit)
        .append(threadMonitorEnabled, that.threadMonitorEnabled)
        .append(threadMonitorInterval, that.threadMonitorInterval)
        .append(threadMonitorTimeLimit, that.threadMonitorTimeLimit).isEquals();
  }
Two instances of <code>DistributedConfigImpl</code> are equal if all of their configuration
properties are the same. Be careful if you need to remove final and override this. See bug
#50939.
geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionConfigImpl.java