anchor.diff:  written in Java.
   
   Spring Framework 5 introduces first-class support for Kotlin in order to allow developers to write Spring + Kotlin
  -application almost like if Spring Framework was a native Kotlin framework.
  +applications almost like if Spring Framework was a native Kotlin framework.
   
   == Requirements ==
   
  -Spring Framework 5 supports Kotlin 1.1+ and requires both `kotlin-stdlib` (or one of its variants
  -`kotlin-stdlib-jre7` or `kotlin-stdlib-jre8`) and `kotlin-reflects` to be present on the classpath.
  -They are provided by default if you bootstrap a Kotlin project on
  +Spring Framework 5 supports Kotlin 1.1+ and requires https://bintray.com/bintray/jcenter/org.jetbrains.kotlin%3Akotlin-stdlib[`kotlin-stdlib`] (or one of its
  +https://bintray.com/bintray/jcenter/org.jetbrains.kotlin%3Akotlin-stdlib-jre7[`kotlin-stdlib-jre7`]
  +/ https://bintray.com/bintray/jcenter/org.jetbrains.kotlin%3Akotlin-stdlib-jre8[`kotlin-stdlib-jre8`] variants)
  +and https://bintray.com/bintray/jcenter/org.jetbrains.kotlin%3Akotlin-reflect[`kotlin-reflect`]
  +to be present on the classpath. They are provided by default if you bootstrap a Kotlin project on
   https://start.spring.io/#!language=kotlin[start.spring.io].
   
   == Kotlin extensions for Spring API
   
   Thanks to its great https://kotlinlang.org/docs/reference/java-interop.html[Java interoperability]
  -and https://kotlinlang.org/docs/reference/extensions.html[Kotlin extensions], Spring
  -Framework 5 Kotlin API is leveraging the Java's one, completed by a few Kotlin specific API
  -available out of the box from Spring Framework JARs.
  +and to https://kotlinlang.org/docs/reference/extensions.html[Kotlin extensions], Spring
  +Framework Kotlin API is leveraging the regular Java's one, completed by a few Kotlin specific API
  +available out of the box in Spring Framework artifacts.
   
   {doc-root}/spring-framework/docs/{spring-version}/kdoc-api/spring-framework/[Spring Framework KDoc API] lists
  -and documents all Kotlin extensions and DSL available.
  -
  -[NOTE]
  -====
  -Keep in mind that Kotlin extensions need to be imported to be use. That means for example that
  -`GenericApplicationContext.registerBean` Kotlin extensions will be available only if you write
  -`import org.springframework.context.support.registerBean`. That said, like with static imports,
  -IDEs should automatically suggest them in most cases.
  +and documents all the Kotlin extensions and DSL available.
  +
  +[NOTE]
  +====
  +Keep in mind that Kotlin extensions need to be imported to be used. That means for example that
  +`GenericApplicationContext.registerBean` Kotlin extension will be available only if
  +`import org.springframework.context.support.registerBean` is present in your imports.
  +That said, like with static imports, your IDE should automatically suggest them in most cases.
   ====
   
   For example, https://kotlinlang.org/docs/reference/inline-functions.html#reified-type-parameters[Kotlin reified type parameters]
   provide a workaround for JVM https://docs.oracle.com/javase/tutorial/java/generics/erasure.html[generics type erasure],
  -so Spring Framework 5 introduces some extensions to take advantage of this feature to provide a better API when possible.
  -That allows to provide convenient API for `RestTemplate`, for the new `WebClient` from Spring WebFlux
  -and for various other API.
  +and Spring Framework provides some extensions to take advantage of this feature.
  +That allows to provide a better Kotlin API `RestTemplate`, the new `WebClient` from Spring
  +WebFlux and for various other API.
   
   To retrieve a list of `Foo` objects in Java you have to write:
   
  
positive.code: == Support for Kotlin classes
  
  Spring Framework 5 now supports various Kotlin constructs like instantiating Kotlin classes
  via primary constructors, immutable classes data binding and optional parameters with default values.
  
  == Leveraging Kotlin nullable information in Spring annotations
  
  Spring Framework also takes advantage of https://kotlinlang.org/docs/reference/null-safety.html[Kotlin null-safety support]
  to determine if an HTTP parameter is required without having to define explicitly the `required` attribute.
  That means `@RequestParam name: String?` with be treated as not required and `@RequestParam name: String` as required.
  
  This is also supported on Spring Messaging `@Header` annotation.
  
  In a similar fashion, Spring bean injection with `@Autowired` or `@Inject` uses this information to know if a bean is required or not.
  `@Autowired lateinit var foo: Foo` implies that a bean of type `Foo` must be registered in the application context while
  `@Autowired lateinit var foo: Foo?` won’t raise an error if such bean does not exist.
  
  == Spring WebFlux functional DSL
  
  Spring Framework 5.0 comes with a {doc-root}/spring-framework/docs/{spring-version}/kdoc-api/spring-framework/org.springframework.web.reactive.function.server/-router-function-dsl/[Kotlin routing DSL] that allows you to leverage the
  <<webflux-fn,WebFlux functional API] with clean and idiomatic Kotlin code:
  
  [source,kotlin]
  ----
  
negative.code: It is also possible to create a standalone WebFlux project as described in
  https://spring.io/blog/2017/08/01/spring-framework-5-kotlin-apis-the-functional-way[this blog post].
  
  === Choose your web flavor
  
  Spring Framework now comes with 2 different web stacks: <<web.adoc,Spring MVC>> and
  <<reactive-web.adoc,Spring WebFlux>>.
  
  Spring WebFlux is recommended if you want to create applications that will deal with latency,
  long-lived connections, streaming scenarios or simply if you want to use the web functional
  