We have Events (ChildrenUpdated extends NodeUpdated extends MapUpdated).
We have special Event GenericNodeUpdated which could be used on the server side because it can handle all kinds of content. After I change to Java 8 I can make nodeId optional, but currently there are no MapUpdated events without node ID.
It is all still work in progress, I just wanted to let you know
Another point : at work I have learned to code in functional style instead of using for loops.
We extensively use Java8, Optional, Stream API and vavr library http://www.vavr.io/
Because Java 9 should be released soon I suggest that we allow to use Java 8 in Freeplane and make use of functional style here too.