docs: public Future<AuthenticationResult> acquireToken(final String resource,
              final String clientId, final String username,
              final String password, final AuthenticationCallback callback) {
          if (StringHelper.isBlank(resource)) {
              throw new IllegalArgumentException("resource is null or empty");
          }
  
          if (StringHelper.isBlank(clientId)) {
              throw new IllegalArgumentException("clientId is null or empty");
          }
  
          if (StringHelper.isBlank(username)) {
              throw new IllegalArgumentException("username is null or empty");
          }
  
          ClientAuthenticationPost clientAuth = new ClientAuthenticationPost(ClientAuthenticationMethod.NONE, new ClientID(clientId));
  
          if (password != null) {
              return this.acquireToken(new AdalOAuthAuthorizationGrant(
                      new ResourceOwnerPasswordCredentialsGrant(username, new Secret(
                              password)), resource), clientAuth, callback);
          } else {
              return this.acquireToken(new AdalIntegratedAuthorizationGrant(username, resource), clientAuth, callback);
          }
      }