anchor.diff:  
   === Functional Kafka Streams Applications
   
  -With 2.2.0.RELEASE, Kafka Streams binder supports the ability to write applications by creating java.util.function.Function or java.util.consumer.Consumer beans.
  +Starting 2.2.0.RELEASE, Kafka Streams binder supports the ability to write Kafka Streams applications by simply just implementing the java.util.function.Function or java.util.consumer.Consumer interfaces in Java.
   In this section, we will see the details of how the functional support work in the binder.
   The above `StreamListener` based model can be converted as below.
   
  
positive.code: 
  Here we have 3 inputs. The first function takes a `KStream` and its output is another `Function` that takes a `GlobalKTable` as its input and another function as its output.
  This last function takes another `GlobalKTable` as its input and a `KStream` is provided as this function's output which will be used as the processor's output.
  In this example, we have three curried functions. Behind the scenes, the binder will call the `apply` method on those functions in the order that they appear. 
  
  Here is the corresponding binding interface for this application.
  
negative.code: 
  ==== Using custom state stores in functional applications
  
  You can define custom state stores as beans in your application and those will be detected and added to the Kafka Streams builder by the binder.
  Note that, for regular StreamListener based processors, you still need to use the `KafkaStreamsStateStore` annotation for custom state stores.
  Here is an example of using custom state stores with functional style described in this section.
  
  [source]
  ----
  