anchor.diff:  immutable. Instances of these types are used to configure some part of the system (e.g. `CacheManager`, `Cache`,
   `Service`, ...). If a given configured type has a requirement to modify it's configuration, a additional _runtime
   configuration_ is introduced, e.g. `RuntimeCacheConfiguration`. That type will expose additional mutative methods for
  -attributes that are mutable. Internally it will also let consumers of the type to register listener for these attributes.
  +attributes that are mutable. Internally it will also let consumers of the type register listener for these attributes.
   
   image::https://raw.githubusercontent.com/ehcache/ehcache3/master/docs/images/design/basics/config.png[Configuration types]
   
  
positive.code: 
  == State transitions
  
  A lifecycled instance, e.g. a `CacheManager` or a `UserManagedCache`, have three states represented by the
  `org.ehcache.Status` enum:
  
   . `UNINITIALIZED`: The instance can't be used, it probably just got instantiated or got `.close()` invoked on it;
  
negative.code:  gets registered with it. These `Service` can then be looked up, e.g. by `Cache` or other `Service` instances, using the
   `ServiceProvider` interface;
   - Finally, the `CacheManager` acts as a repository of alias'ed `Cache` instances. Unlike in the previous versions, `Cache`
   instances aren't named, but are registered with the `CacheManager` under an _alias_. The `Cache` is never aware of this.
  
  This diagram tries to summarize the different roles:
  
  