docs: public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
          if (callbacks.length == 1 && callbacks[0] instanceof AuthorizeCallback) {
              AuthorizeCallback acb = (AuthorizeCallback) callbacks[0];
              boolean authorized = acb.getAuthenticationID().equals(acb.getAuthorizationID());
              if (authorized == false) {
                  SECURITY_LOGGER.tracef(
                          "Checking 'AuthorizeCallback', authorized=false, authenticationID=%s, authorizationID=%s.",
                          acb.getAuthenticationID(), acb.getAuthorizationID());
              }
              acb.setAuthorized(authorized);
  
              return;
          }
  
          NameCallback nameCallBack = null;
          EvidenceVerifyCallback evidenceVerifyCallback = null;
          SubjectCallback subjectCallback = null;
  
          for (Callback current : callbacks) {
              if (current instanceof NameCallback) {
                  nameCallBack = (NameCallback) current;
              } else if (current instanceof RealmCallback) {
              } else if (current instanceof EvidenceVerifyCallback) {
                  evidenceVerifyCallback = (EvidenceVerifyCallback) current;
              } else if (current instanceof SubjectCallback) {
                  subjectCallback = (SubjectCallback) current;
              } else {
                  throw new UnsupportedCallbackException(current);
              }
          }
  
          if (nameCallBack == null) {
              SECURITY_LOGGER.trace("No username supplied in Callbacks.");
              throw DomainManagementLogger.ROOT_LOGGER.noUsername();
          }
          final String userName = nameCallBack.getDefaultName();
          if (userName == null || userName.length() == 0) {
              SECURITY_LOGGER.trace("NameCallback either has no username or is 0 length.");
              throw DomainManagementLogger.ROOT_LOGGER.noUsername();
          }
          if (evidenceVerifyCallback == null || evidenceVerifyCallback.getEvidence() == null) {
              SECURITY_LOGGER.trace("No password to verify.");
              throw DomainManagementLogger.ROOT_LOGGER.noPassword();
          }
  
          final char[] password;
  
          if (evidenceVerifyCallback.getEvidence() instanceof PasswordGuessEvidence) {
              password = ((PasswordGuessEvidence) evidenceVerifyCallback.getEvidence()).getGuess();
          } else {
              SECURITY_LOGGER.trace("No password to verify.");
              throw DomainManagementLogger.ROOT_LOGGER.noPassword();
          }
  
          Subject subject = subjectCallback != null && subjectCallback.getSubject() != null ? subjectCallback.getSubject()
                  : new Subject();
          evidenceVerifyCallback.setVerified(verify(userName, password, subject, subjectCallback != null ? subjectCallback::setSubject : null));
      }