anchor.diff:  [source,kotlin,indent=0]
   ----
   	val context = GenericApplicationContext().apply {
  -		beans().initialize(this)
  +		myBeans.initialize(this)
   		refresh()
   	}
   ----
   ====
   
  -NOTE: This DSL is programmatic, meaning it allows custom registration logic of beans
  -through an `if` expression, a `for` loop, or any other Kotlin constructs.
  -
  -See https://github.com/sdeleuze/spring-kotlin-functional/blob/master/src/main/kotlin/functional/Beans.kt[spring-kotlin-functional beans declaration]
  -for a concrete example.
  -
  -NOTE: Spring Boot is based on Java configuration and
  +
  +See https://github.com/sdeleuze/spring-kotlin-functional[spring-kotlin-functional beans declaration] for a concrete example.
  +
  +NOTE: Spring Boot is based on JavaConfig and
   https://github.com/spring-projects/spring-boot/issues/8115[does not yet provide specific support for functional bean definition],
   but you can experimentally use functional bean definitions through Spring Boot's `ApplicationContextInitializer` support.
   See https://stackoverflow.com/questions/45935931/how-to-use-functional-bean-definition-kotlin-dsl-with-spring-boot-and-spring-w/46033685#46033685[this Stack Overflow answer]
  
positive.code: ====
  [source,kotlin,indent=0]
  ----
  	fun beans() = beans {
  		bean<UserHandler>()
  		bean<Routes>()
  		bean<WebHandler>("webHandler") {
  			RouterFunctions.toWebHandler(
  				ref<Routes>().router(),
  				HandlerStrategies.builder().viewResolver(ref()).build()
  			)
  		}
  		bean("messageSource") {
  			ReloadableResourceBundleMessageSource().apply {
  				setBasename("messages")
  				setDefaultEncoding("UTF-8")
  			}
  		}
  		bean {
  			val prefix = "classpath:/templates/"
  			val suffix = ".mustache"
  			val loader = MustacheResourceTemplateLoader(prefix, suffix)
  			MustacheViewResolver(Mustache.compiler().withLoader(loader)).apply {
  				setPrefix(prefix)
  				setSuffix(suffix)
  			}
  		}
  		profile("play") {
  			bean<Play>()
  		}
  	}
  ----
  ====
  
  In the preceding example, `bean<Routes>()` uses autowiring by constructor, and `ref<Routes>()`
  is a shortcut for `applicationContext.getBean(Routes::class.java)`.
  
  You can then use this `beans()` function to register beans on the application context,
  as the following example shows:
  
negative.code: * https://try.kotlinlang.org/[Try Kotlin in your browser]
  * https://blog.jetbrains.com/kotlin/[Kotlin blog]
  * https://kotlin.link/[Awesome Kotlin]
  
  
  === Examples
  