private ChannelInitializer<Channel> clientChannelInitializer(SessionProtocol p, SslContext sslCtx,
                                                                 boolean webSocket, boolean closeSslContext) {
        return new ChannelInitializer<Channel>() {
            @Override
            protected void initChannel(Channel ch) throws Exception {
                if (closeSslContext) {
                    ch.closeFuture().addListener(unused -> releaseSslContext(sslCtx));
                }
                ch.pipeline().addLast(new HttpClientPipelineConfigurator(
                        clientFactory, webSocket, p, sslCtx));
            }
        };
    }
Returns a {@link Bootstrap} corresponding to the specified {@link SocketAddress}
{@link SessionProtocol} and {@link SerializationFormat}.
core/src/main/java/com/linecorp/armeria/client/Bootstraps.java