- Adding null check for current state - Remove synchronization from scheduleEventQueueProcessing method in executor. Looks like this sync is not really needed and indeed may cause jvm level deadlocks if threads are used for execution. - Change how some internals in AbstractStateMachine are synchronized to limit changes for deadlock. - Relates to #307 - Backport of #359 #360