@Override
		public synchronized String chooseServerAlias(String keyType, Principal[] issuers,
				Socket socket) {
			try {
				init();
			}
			catch (CancelledException e) {
				// ignore
			}
			if (wrappedKeyManager == null) {
				return null;
			}
			return wrappedKeyManager.chooseServerAlias(keyType, issuers, socket);
		}
<code>ApplicationKeyManager</code> provides a wrapper for the X509 wrappedKeyManager whose
instantiation is delayed until needed.  When a wrapper method is first invoked, the
{@link ApplicationKeyManagerFactory#init()} method is called to open the keystore
(which may require a password prompt) and establish the underlying X509KeyManager.
Ghidra/Framework/Generic/src/main/java/ghidra/net/ApplicationKeyManagerFactory.java