anchor.diff:  * `setupMetadata(Object, MimeType)` -- other metadata to include in the `SETUP`.
   
   For data, the default mime type is derived from the first configured `Decoder`. For
  -metadata, the default mime type is composite metadata which allows multiple metadata
  -value and mime type pairs per request. Typically both don't need to be changed.
  +metadata, the default mime type is
  +{gh-rsocket-extentions}/CompositeMetadata.md[composite metadata] which allows multiple
  +metadata value and mime type pairs per request. Typically both don't need to be changed.
   
   Data and metadata in the `SETUP` frame is optional. On the server side,
  -a `@ConnectMapping` methods can be used to handle the start of a connection and the
  -content of the `SETUP` frame. Metadata may include connection level security info.
  +<<rsocket-annot-connectmapping>> methods can be used to handle the start of a
  +connection and the content of the `SETUP` frame. Metadata may be used for connection
  +level security.
   
   
   [[rsocket-requester-client-strategies]]
  
positive.code: 
  Protocol extensions define common metadata formats for use in applications:
  
  * https://github.com/rsocket/rsocket/blob/master/Extensions/CompositeMetadata.md[Composite Metadata]
  -- multiple, independently formatted metadata entries.
  * https://github.com/rsocket/rsocket/blob/master/Routing.md[Routing] -- the route for a
  request.
  
  
  
  [[rsocket-java]]
  === Java Implementation
  
  The https://github.com/rsocket/rsocket-java[Java implementation] for RSocket is built on
  https://projectreactor.io/[Project Reactor]. The transports for  TCP and WebSocket are
  built on https://github.com/reactor/reactor-netty[Reactor Netty]. As a Reactive Streams
  library, Reactor simplifies the job of implementing the protocol. For applications it is
  
negative.code: [[rsocket-annot-connectmapping]]
  === @ConnectMapping
  
  `@ConnectMapping` handles the `SETUP` frame at the start of an RSocket connection, and
  any subsequent metadata push notifications through the `METADATA_PUSH` frame, i.e.
  `metadataPush(Payload)` in `io.rsocket.RSocket`.
  
  `@ConnectMapping` methods support the same arguments as
  <<rsocket-annot-messagemapping>> but based on metadata and data from the `SETUP` and
  `METADATA_PUSH` frames. `@ConnectMapping` can have a pattern to narrow handling to
  specific connections that have a route in the metadata, or if no patterns are declared
  then all connections match.
  
  `@ConnectMapping` methods cannot return data and must be declared with `void` or
  `Mono<Void>` as the return value. If handling returns an error for a new
  connection then the connection is rejected. Handling must not be held up to make
  requests to the `RSocketRequester` for the connection. See
  <<rsocket-requester-server>> for details.
  
  
  
  
  