Bootstrap getOrCreate(SocketAddress remoteAddress, SessionProtocol desiredProtocol,
                          SerializationFormat serializationFormat) {
        if (!httpAndHttpsValues().contains(desiredProtocol)) {
            throw new IllegalArgumentException("Unsupported session protocol: " + desiredProtocol);
        }

        final boolean isDomainSocket = remoteAddress instanceof DomainSocketAddress;
        if (isDomainSocket && unixBaseBootstrap == null) {
            throw new IllegalArgumentException("Domain sockets are not supported by " +
                                               eventLoop.getClass().getName());
        }

        if (sslContextFactory == null || !desiredProtocol.isTls()) {
            return select(isDomainSocket, desiredProtocol, serializationFormat);
        }

        final Bootstrap baseBootstrap = isDomainSocket ? unixBaseBootstrap : inetBaseBootstrap;
        assert baseBootstrap != null;
        return newBootstrap(baseBootstrap, remoteAddress, desiredProtocol, serializationFormat);
    }
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