docs: private Object createClientBuilder(ClassLoader loader, String userName, @Sensitive String password) throws Exception {
          if (loader == null)
              loader = library.getClassLoader();
  
          Class<?> cloudantClientOptionsBuilderCls = loader.loadClass(CLOUDANT_CLIENT_OPTIONS_BUILDER_CLS_STR);
          // create the builder
          Object builderInstance = newInstance(cloudantClientOptionsBuilderCls);
  
          if (userName != null)
              set(cloudantClientOptionsBuilderCls, builderInstance, USERNAME, String.class, userName);
          if (password != null)
              set(cloudantClientOptionsBuilderCls, builderInstance, PASSWORD, String.class, password);
  
          Integer maxConn = (Integer)props.get(MAX_CONNECTIONS);
          set(cloudantClientOptionsBuilderCls, builderInstance, MAX_CONNECTIONS, int.class, maxConn);
  
          Long connectTimeout = (Long)props.get(CONNECT_TIMEOUT);
          set(cloudantClientOptionsBuilderCls, builderInstance, CONNECT_TIMEOUT, long.class, connectTimeout);
  
          Long readTimeout = (Long)props.get(READ_TIMEOUT);
          set(cloudantClientOptionsBuilderCls, builderInstance, READ_TIMEOUT, long.class, readTimeout);
  
          String proxyUrl = (String)props.get(PROXY_URL);
          if (proxyUrl != null) {
              set(cloudantClientOptionsBuilderCls, builderInstance, PROXY_URL, URL.class, AccessController.doPrivileged(new ConstructURLAction(proxyUrl)));
          }
  
          String proxyUser = (String)props.get(PROXY_USER);
          if (proxyUser != null) {
              set(cloudantClientOptionsBuilderCls, builderInstance, PROXY_USER, String.class, proxyUser);
          }
  
          SerializableProtectedString proxyPass = (SerializableProtectedString)props.get(PROXY_PASSWORD);
          if (proxyPass != null) {
              String pwdStr = String.valueOf(proxyPass.getChars());
              pwdStr = PasswordUtil.getCryptoAlgorithm(pwdStr) == null ? pwdStr : PasswordUtil.decode(pwdStr);
              set(cloudantClientOptionsBuilderCls, builderInstance, PROXY_PASSWORD, String.class, pwdStr);
          }
  
          Boolean disableSSLAuthentication = (Boolean)props.get(DISABLE_SSL_AUTHENTICATION);
          if (disableSSLAuthentication) {
              if(TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(this, tc, "disableSSLAuthentication()");
              cloudantClientOptionsBuilderCls.getMethod(DISABLE_SSL_AUTHENTICATION).invoke(builderInstance); 
          } else {
              SSLSocketFactory sslSF = getSSLSocketFactory();
              if (sslSF != null) {
                  set(cloudantClientOptionsBuilderCls, builderInstance, SSL_SOCKET_FACTORY, SSLSocketFactory.class, sslSF);
              }
          }
  
          return builderInstance;
      }