docs: protected boolean redirectMatches(String requestedRedirect, String redirectUri) {
  		UriComponents requestedRedirectUri = UriComponentsBuilder.fromUriString(requestedRedirect).build();
  		UriComponents registeredRedirectUri = UriComponentsBuilder.fromUriString(redirectUri).build();
  
  		boolean schemeMatch = isEqual(registeredRedirectUri.getScheme(), requestedRedirectUri.getScheme());
  		boolean userInfoMatch = isEqual(registeredRedirectUri.getUserInfo(), requestedRedirectUri.getUserInfo());
  		boolean hostMatch = hostMatches(registeredRedirectUri.getHost(), requestedRedirectUri.getHost());
  		boolean portMatch = matchPorts ? registeredRedirectUri.getPort() == requestedRedirectUri.getPort() : true;
  		boolean pathMatch = isEqual(registeredRedirectUri.getPath(),
  				StringUtils.cleanPath(requestedRedirectUri.getPath()));
  		boolean queryParamMatch = matchQueryParams(registeredRedirectUri.getQueryParams(),
  				requestedRedirectUri.getQueryParams());
  
  		return schemeMatch && userInfoMatch && hostMatch && portMatch && pathMatch && queryParamMatch;
  	}