code: static WebClient createWebClient(CredHubProperties properties, ClientHttpConnector clientHttpConnector,
  									 ReactiveClientRegistrationRepository clientRegistrationRepository,
  									 ServerOAuth2AuthorizedClientRepository authorizedClientRepository) {
  		WebClientReactiveClientCredentialsTokenResponseClient tokenResponseClient =
  				new WebClientReactiveClientCredentialsTokenResponseClient();
  		tokenResponseClient.setWebClient(WebClient.builder()
  				.clientConnector(clientHttpConnector)
  				.build());
  
  		ServerOAuth2AuthorizedClientExchangeFilterFunction oauth =
  				new ServerOAuth2AuthorizedClientExchangeFilterFunction(clientRegistrationRepository,
  						authorizedClientRepository);
  		oauth.setClientCredentialsTokenResponseClient(tokenResponseClient);
  
  		return buildWebClient(properties.getUrl(), clientHttpConnector)
  				.filter(oauth)
  				.defaultRequest(requestHeadersSpec ->
  						requestHeadersSpec.attributes(
  								ServerOAuth2AuthorizedClientExchangeFilterFunction
  										.clientRegistrationId(properties.getOauth2().getRegistrationId())))
  				.build();
  	}
docs: Create a {@link WebClient} configured for communication with a CredHub server.
  
  @param properties          CredHub connection properties
  @param clientHttpConnector the {@link ClientHttpConnector} to use when
  creating new connections
  @param clientRegistrationRepository a repository of OAuth2 client registrations
  @param authorizedClientRepository a repository of OAuth2 authorized clients
  @return a configured {@link WebClient}