anchor.diff:  re-start --- -Dkorolev.dev=true
   -------------------------------------------------------------------------------
   
  -Make a change in the source code of your app. Save the file. Switch to a browser and wait for changes to deliver. Developer mode does not work with custom `StateStorage`.
  +Make a change to your app source code and save the file. Switch to the browser and wait for changes to deliver.
  +
  +Notice that developer mode does not work with custom `StateStorage`.
   
   [NOTE]
   ============
  -Ensure that everything is stateless except Korolev part of the application. For example, if you have models which hold state in hash maps they will be not saved. It will lead to inconsistency.
  +Ensure that everything is stateless except Korolev part of the application. For example, if you keep some state outside of Korolev state, it won't be saved and will lead to inconsistency.
   ============
   
   === Serve files from resource directory
   
  -Everything that placed in directory named `static` (in the classpath of the application) will be served from the root of the application endpoint. It may be useful when you want to distribute some small images or CSS with the app.
  +Everything placed in directory named `static` (in the classpath of the application) will be served from the root of the application endpoint. It may be useful when you want to distribute some small images or CSS with the app.
   
   [WARNING]
   ============
  -Korolev is not some sort of CDN node. Avoid to serve a lot of large files using this feature.
  +Korolev is not some sort of CDN node. Avoid serving lots of large files using this feature.
   ============
   
   == Integrations
   
   === JCache
   
  -For large applications, when one node can't serve all clients, you need a way to scale application to multiple nodes. Although Korolev usually use permanent connections, a case when a client connects to a wrong node is possible. First, it may happen when reconnect. Second, it may happen when the client downgrades his connection from WebSocket to long polling for some reason. It means that every node in a cluster should have access to all user states (sessions).
  +For large applications, when one node can't serve all clients, you need a way to scale application to multiple nodes. Although Korolev usually use persistent connections, a case when a client connects to a wrong node is possible. First, it may happen after reconnect. Secondly, it may happen when the client downgrades his connection from WebSocket to long polling for some reason. It means that every node in a cluster should have access to all user states (sessions).
   
   To fix this, you can apply any in-memory storage compatible with https://github.com/jsr107/jsr107spec[JCache]. Just add a dependency to your SBT configuration.
   
  
positive.code:     // with any url but "/".
      static = (deviceId) => Router(
        toState = {
          case (_, Root / author / article) => articleServrice.load(author, article)
          case _ => articleServrice.defaultArticle
        }
      ),
      dynamic = (device, session) => Router(
  
negative.code: 
  === Transitions
  
  Transition is a function that applies to the current state and produces a new state. Consider a transition which adds a new friend to the friends list.
  
  [source,scala]
  --------------------------------------------------------------
  