anchor.diff:  configure or customize message readers.
   
   You can use `@RequestBody` in combination with `javax.validation.Valid` or Spring's
  -`@Validated` annotation, which causes Standard Bean Validation to be applied.
  -By default, validation errors cause a `WebExchangeBindException`, which is turned
  -into a 400 (`BAD_REQUEST`) response. Alternatively, you can handle validation errors locally
  -within the controller through an `Errors` or a `BindingResult` argument. The following
  -example uses a `BindingResult` argument`:
  +`@Validated` annotation, which causes Standard Bean Validation to be applied. Validation
  +errors cause a `WebExchangeBindException`, which results in a 400 (BAD_REQUEST) response.
  +The exception contains a `BindingResult` with error details and can be handled in the
  +controller method by declaring the argument with an async wrapper and then using error
  +related operators:
   
   [source,java,indent=0,subs="verbatim,quotes",role="primary"]
   .Java
   ----
   	@PostMapping("/accounts")
  -	public void handle(@Valid @RequestBody Account account, BindingResult result) {
  -		// ...
  +	public void handle(@Valid @RequestBody Mono<Account> account) {
  +		// use one of the onError* operators...
   	}
   ----
   [source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
   .Kotlin
   ----
   	@PostMapping("/accounts")
  -	fun handle(@Valid @RequestBody account: Account, result: BindingResult) {
  +	fun handle(@Valid @RequestBody account: Mono<Account>) {
   		// ...
   	}
   ----
  
positive.code: ----
  <1> Using `@RequestPart` to get the metadata.
  
  You can use `@RequestPart` combination with `javax.validation.Valid` or Spring's
  `@Validated` annotation, which causes Standard Bean Validation to be applied.
  By default, validation errors cause a `WebExchangeBindException`, which is turned
  into a 400 (`BAD_REQUEST`) response. Alternatively, you can handle validation errors locally
  within the controller through an `Errors` or `BindingResult` argument, as the following example shows:
  
  [source,java,indent=0,subs="verbatim,quotes",role="primary"]
  .Java
  ----
  	@PostMapping("/")
  	public String handle(@Valid @RequestPart("meta-data") MetaData metadata, // <1>
  			BindingResult result) { <2>
  		// ...
  	}
  ----
  <1> Using a `@Valid` annotation.
  <2> Using a `BindingResult` argument.
  
  [source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
  .Kotlin
  ----
  	@PostMapping("/")
  	fun handle(@Valid @RequestPart("meta-data") metadata: MetaData, // <1> 
  			result: BindingResult): String { // <2>
  		// ...
  	}
  ----
  <1> Using a `@Valid` annotation.
  <2> Using a `BindingResult` argument.
  
  To access all multipart data as a `MultiValueMap`, you can use `@RequestBody`,
  as the following example shows:
  
negative.code:   See "`Any other argument`" later in this table.
  
  | `Errors`, `BindingResult`
  | For access to errors from validation and data binding for a command object, i.e. a
    `@ModelAttribute` argument. An `Errors`, or `BindingResult` argument must be declared
    immediately after the validated method argument.
  
  | `SessionStatus` + class-level `@SessionAttributes`
  