code: @Override
      public String chooseServerAlias(String keyType, Principal[] issuers, Socket socket) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.entry(tc, "chooseServerAlias", new Object[] { keyType, issuers, socket });
  
          try {
  
              if (customKM != null) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      Tr.exit(tc, "chooseServerAlias -> " + customKM.getClass().getName());
                  return customKM.chooseServerAlias(keyType, issuers, socket);
              }
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  Tr.exit(tc, "chooseServerAlias");
              return chooseServerAlias(keyType, issuers);
          } catch (Throwable t) {
              // here we want to try to catch any runtime exceptions that might occur,
              // print a message and rethrow
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "Caught exception in chooseServerAlias.", new Object[] { t });
              FFDCFilter.processException(t, getClass().getName(), "chooseServerAlias", this);
  
              if (t instanceof RuntimeException) {
                  throw (RuntimeException) t;
              }
              throw new RuntimeException(t);
          }
      }
docs: /*
  @see javax.net.ssl.X509KeyManager#chooseServerAlias(java.lang.String,
  java.security.Principal[], java.net.Socket)