Unlike in Java a better model for synchronisation would be active objects
where you can specify groupings of parallelism or serialism, i.e., being
able to specify that calls to a group of functions can only happen one
after the other.
Perhaps this can be in the form of an attribute. E.g.
@active(group="ObjXYZStateChange") or @actor(receive="aFunc")