anchor.diff:  
   You can write your own `RequestPredicate`, but the `RequestPredicates` utility class
   offers commonly used implementations, based on the request path, HTTP method, content-type,
  -and so on. The following example creates a request predicate based on a path:
  -
  -====
  -[source,java,indent=0]
  -[subs="verbatim,quotes"]
  -----
  -RouterFunction<ServerResponse> route =
  -	RouterFunctions.route(RequestPredicates.path("/hello-world"),
  -	request -> Response.ok().body(fromObject("Hello World")));
  +and so on.
  +The following example uses a request predicate to create a constraint based on the `Accept`
  +header:
  +
  +====
  +[source,java,indent=0]
  +[subs="verbatim,quotes"]
  +----
  +RouterFunction<ServerResponse> route = RouterFunctions.route()
  +	.GET("/hello-world", accept(MediaType.TEXT_PLAIN),
  +		request -> Response.ok().body(fromObject("Hello World")));
   ----
   ====
   
  
positive.code: == HandlerFunction
  
  `ServerRequest` and `ServerResponse` are immutable interfaces that offer JDK 8-friendly
  access to the HTTP request and response with
  http://www.reactive-streams.org[Reactive Streams] back pressure against the request
  and response body stream. The request body is represented with a Reactor `Flux` or `Mono`.
  The response body is represented with any Reactive Streams `Publisher`, including `Flux`
  and `Mono`. For more on that, see
  <<web-reactive.adoc#webflux-reactive-libraries,Reactive Libraries>>.
  
  
  
  
negative.code: ----
  ====
  
  That is convenient, but in an application we need multiple functions, and multiple inline
  lambda's can get messy.
  Therefore, it is useful to group related handler functions together into a handler class, which
  has a similar role as  `@Controller` in an annotation-based application.
  For example, the following class exposes a reactive `Person` repository:
  
  ====
  [source,java,indent=0]
  