@Override
 public boolean equals(Object obj) {
   if (this == obj) return true;
   if (obj == null) return false;
   if (getClass() != obj.getClass()) return false;
   ModelRootObjectKey other = (ModelRootObjectKey) obj;
   if (weakAdaptable.get() == null) {
     if (other.weakAdaptable.get() != null) return false;
   } else if (!weakAdaptable.equals(other.weakAdaptable.get())) return false;
   if (xsdObject.get() == null) {
     if (other.xsdObject.get() != null) return false;
   } else if (!xsdObject.get().equals(other.xsdObject.get())) return false;
   if (weakResource.get() == null) {
     if (other.weakResource.get() != null) return false;
   } else if (!weakResource.get().equals(other.weakResource.get())) return false;
   return true;
 }
  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    GlobalConfigurationBuilder that = (GlobalConfigurationBuilder) o;

    if (asyncListenerExecutor != null
        ? !asyncListenerExecutor.equals(that.asyncListenerExecutor)
        : that.asyncListenerExecutor != null) return false;
    if (asyncTransportExecutor != null
        ? !asyncTransportExecutor.equals(that.asyncTransportExecutor)
        : that.asyncTransportExecutor != null) return false;
    if (remoteCommandsExecutor != null
        ? !remoteCommandsExecutor.equals(that.remoteCommandsExecutor)
        : that.remoteCommandsExecutor != null) return false;
    if (cl != null ? !cl.equals(that.cl) : that.cl != null) return false;
    if (evictionScheduledExecutor != null
        ? !evictionScheduledExecutor.equals(that.evictionScheduledExecutor)
        : that.evictionScheduledExecutor != null) return false;
    if (globalJmxStatistics != null
        ? !globalJmxStatistics.equals(that.globalJmxStatistics)
        : that.globalJmxStatistics != null) return false;
    if (replicationQueueScheduledExecutor != null
        ? !replicationQueueScheduledExecutor.equals(that.replicationQueueScheduledExecutor)
        : that.replicationQueueScheduledExecutor != null) return false;
    if (serialization != null
        ? !serialization.equals(that.serialization)
        : that.serialization != null) return false;
    if (shutdown != null ? !shutdown.equals(that.shutdown) : that.shutdown != null) return false;
    if (site != null ? !site.equals(that.site) : that.site != null) return false;
    if (transport != null ? !transport.equals(that.transport) : that.transport != null)
      return false;

    return !(totalOrderExecutor != null
        ? !totalOrderExecutor.equals(that.totalOrderExecutor())
        : that.totalOrderExecutor != null);
  }