What's the idea / problem behind at all? I must confess I'm not sure why there is any synchronisation here at all...

- On level of `ApplicationInstance` everything should be already synchronized and single-threaded from Echo perspective. The pointer here is the class `Synchronization`
- The no-go derives from the lines below. There is absolutely no point in synchronizing a write access at all. In case the idea is, that other places have to see changes on `disposed` immediately you would rather use `transient` to ensure immediate visibility within the Java memory model.
- Furthermore: There is synchronisation is done within a `finally` block. This is even more grave. Its generally a good advice to avoid `finally` where possible because this is a JVM-wide, single-thread post-processing step required before the JVM can free those memory areas. An if you now place a lock inside that, too (which may be locked) you potentially block the whole GC (which is good beause you would notice) or which just slows down your GC (which is bad, becasue you probably would not have any clue at all).

Can you shed more light behind the idea?