code: @Override
      public DefaultClientResources.Builder mutate() {
  
          Builder builder = new Builder();
  
          builder.eventExecutorGroup(eventExecutorGroup()).timer(timer()).eventBus(eventBus())
                  .commandLatencyCollector(commandLatencyCollector())
                  .commandLatencyPublisherOptions(commandLatencyPublisherOptions()).dnsResolver(dnsResolver())
                  .socketAddressResolver(socketAddressResolver()).reconnectDelay(reconnectDelay)
                  .nettyCustomizer(nettyCustomizer()).tracing(tracing());
  
          builder.sharedCommandLatencyCollector = sharedEventLoopGroupProvider;
          builder.sharedEventExecutor = sharedEventExecutor;
          builder.sharedEventLoopGroupProvider = sharedEventLoopGroupProvider;
          builder.sharedTimer = sharedTimer;
  
          return builder;
      }
docs: Returns a builder to create new {@link DefaultClientResources} whose settings are replicated from the current
  {@link DefaultClientResources}.
  <p>
  Note: The resulting {@link DefaultClientResources} retains shared state for {@link Timer},
  {@link CommandLatencyCollector}, {@link EventExecutorGroup}, and {@link EventLoopGroupProvider} if these are left
  unchanged. Thus you need only to shut down the last created {@link ClientResources} instances. Shutdown affects any
  previously created {@link ClientResources}.
  </p>
  
  @return a {@link DefaultClientResources.Builder} to create new {@link DefaultClientResources} whose settings are
  replicated from the current {@link DefaultClientResources}.
  
  @since 5.1