docs: @Override
      public void initialize(Subject subject, CallbackHandler callbackHandlerFromLoginContextEntry, Map<String, ?> sharedState, Map<String, ?> options) {
          CallbackHandler callbackHandlerFromDD = null;
          CallbackHandler callbackHandler = null;
          Boolean ignoreCallbackFromDD = false;
  
          //get option to determine whether to look for callback handler in the DD
          if (options != null) {
              ignoreCallbackFromDD = (Boolean) options.get(JAASClientConfigurationImpl.WAS_IGNORE_CLIENT_CONTAINER_DD);
          }
          if (ignoreCallbackFromDD != null && ignoreCallbackFromDD) {
              if (tc.isDebugEnabled()) {
                  Tr.debug(tc, "CallbackHandler passed from LoginContext constructor is used because ignore option is set on the login module.");
              }
              callbackHandler = callbackHandlerFromLoginContextEntry;
          }
          else {
              CallbackHandlerProvider cbhProvider = JAASClientService.getCallbackHandlerProvider();
              if (cbhProvider != null) {
                  callbackHandlerFromDD = cbhProvider.getCallbackHandler();
              }
              if (callbackHandlerFromDD != null) {
                  if (tc.isDebugEnabled()) {
                      Tr.debug(tc, "Client Container Deployment Descriptor's CallbackHandler is used: " + callbackHandlerFromDD);
                  }
                  callbackHandler = callbackHandlerFromDD;
              } else {
                  if (tc.isDebugEnabled()) {
                      Tr.debug(tc,
                               "CallbackHandler passed from LoginContext constructor is used because no CallbackHanlder was specified in the Client Container Deployment Descriptor.");
                  }
                  callbackHandler = callbackHandlerFromLoginContextEntry;
              }
          }
          super.initialize(subject, callbackHandler, sharedState, options);
      }