code: @Override
      public String chooseEngineServerAlias(String keyType, Principal[] issuers, SSLEngine engine) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.entry(tc, "chooseEngineServerAlias", new Object[] { keyType, issuers, engine });
  
          String rc = null;
          if (null != customKM && customKM instanceof X509ExtendedKeyManager) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "chooseEngineServerAlias, using customKM -> " + customKM.getClass().getName());
              rc = ((X509ExtendedKeyManager) customKM).chooseEngineServerAlias(keyType, issuers, engine);
          } else {
              rc = chooseServerAlias(keyType, issuers);
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.exit(tc, "chooseEngineServerAlias: " + rc);
          return rc;
      }
docs: Handshakes that use the SSLEngine and not an SSLSocket require this method
  from the extended X509KeyManager.
  
  @see javax.net.ssl.X509ExtendedKeyManager#chooseEngineServerAlias(java.lang.String, java.security.Principal[], javax.net.ssl.SSLEngine)