docs: public static SSLSessionStrategy build(String trustStore,
              String trustStorePassword,
              String keyStore,
              String keyStorePassword,
              String[] keyAliases,
              String keyPassword,
              String[] allowedProtocols,
              String[] allowedCiphers,
              boolean allowAnyHostname,
              boolean trustSelfSigned)
  
      throws NoSuchAlgorithmException, KeyStoreException, CertificateException, IOException,
              KeyManagementException, UnrecoverableKeyException {
  
          Args.notNull(allowedProtocols, "Allowed protocols"); //$NON-NLS-1$
          Args.notNull(allowedCiphers, "Allowed ciphers"); //$NON-NLS-1$
  
          TrustStrategy trustStrategy = trustSelfSigned ?  SELF_SIGNED : null;
          HostnameVerifier hostnameVerifier = allowAnyHostname ? ALLOW_ANY :
              SSLConnectionSocketFactory.getDefaultHostnameVerifier();
          PrivateKeyStrategy privateKeyStrategy = keyAliases == null ? null : new SelectByAlias(keyAliases);
          boolean clientAuth = keyStore == null ? false : true;
  
          SSLContextBuilder builder = SSLContexts.custom();
  
          if (trustStore != null) {
              loadTrustMaterial(builder,
                      new File(trustStore),
                      trustStorePassword.toCharArray(),
                      trustStrategy);
          }
  
          if (keyStore != null) {
              char[] ksp = keyStorePassword == null ? null : keyStorePassword.toCharArray();
              char[] kp = keyPassword == null ? null : keyPassword.toCharArray();
              loadKeyMaterial(builder, new File(keyStore), ksp, kp, privateKeyStrategy);
          }
  
          SSLContext sslContext = builder.build();
          return new SSLSessionStrategy(hostnameVerifier, new CipherSelectingSSLSocketFactory(
                  sslContext.getSocketFactory(), allowedCiphers, allowedProtocols, clientAuth));
      }