code: @Override
      public synchronized ClientBootstrap newClientBootstrap() throws Exception {
  
          ClientSocketChannelFactory clientChannelFactory = this.clientChannelFactory;
  
          if (clientChannelFactory == null) {
              Executor bossExecutor = executorServiceFactory.newExecutorService("boss.client");
              NioClientBossPool bossPool = new NioClientBossPool(bossExecutor, 1);
              Executor workerExecutor = executorServiceFactory.newExecutorService("worker.client");
              NioWorkerPool workerPool = new NioWorkerPool(workerExecutor, 1);
              clientChannelFactory = new NioClientSocketChannelFactory(bossPool, workerPool);
  
              // unshared
              channelFactories.add(clientChannelFactory);
          }
  
          return new ClientBootstrap(clientChannelFactory) {
              @Override
              public ChannelFuture connect(final SocketAddress localAddress, final SocketAddress remoteAddress) {
                  final InetSocketAddress localChannelAddress = toInetSocketAddress((ChannelAddress) localAddress);
                  final InetSocketAddress remoteChannelAddress = toInetSocketAddress((ChannelAddress) remoteAddress);
                  return super.connect(localChannelAddress, remoteChannelAddress);
              }
          };
      }
docs: Returns a {@link ClientBootstrap} instance for the named transport.