docs: public SSLContext getSSLContext(String sslAliasName, Map<String, Object> connectionInfo,
                                      SSLConfigChangeListener listener, boolean tryDefault) throws SSLException, SSLConfigurationNotAvailableException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.entry(tc, "getSSLContext", new Object[] { sslAliasName, connectionInfo, listener });
  
          SecurityManager sm = System.getSecurityManager();
          if (sm != null) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Performing Java 2 Security Permission Check ...");
                  Tr.debug(tc, "Expecting : " + GET_SSLCONFIG.toString());
              }
              sm.checkPermission(GET_SSLCONFIG);
          }
  
          try {
              SSLConfig props = (SSLConfig) getProperties(sslAliasName, connectionInfo, listener, tryDefault);
  
              if (props != null) {
                  String contextProvider = props.getProperty(Constants.SSLPROP_CONTEXT_PROVIDER);
                  SSLContext context = JSSEProviderFactory.getInstance(contextProvider).getSSLContext(connectionInfo, props);
  
                  if (context != null) {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                          Tr.exit(tc, "getSSLContext");
                      return context;
                  }
                  throw new SSLException("SSLContext could not be created from specified SSL properties.");
              }
              // If we get here, the requested configuration is not available.
              // Either:
              // 1. The config is NOT valid and will never be there (not defined)
              // 2. The config has not been processed YET
              // We guard on tryDefault here to ensure we don't regress existing behaviour
              if (tryDefault) {
                  throw new SSLException("SSLContext could not be created due to null SSL properties.");
              } else {
                  throw new SSLConfigurationNotAvailableException("SSLContext could not be created for alias '" + sslAliasName + "', the configuration is not present.");
              }
          } catch (SSLConfigurationNotAvailableException e) {
              throw e;
          } catch (Exception e) {
              FFDCFilter.processException(e, getClass().getName(), "getSSLContext (2)", this);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  Tr.exit(tc, "The following exception occurred in getSSLContext().", new Object[] { e });
              throw asSSLException(e);
          }
      }