// (e.g. because a message arrived), restart the behaviour to give it another chance.
// Furthermore restart it even if it appears to be runnable since, due to the fact that block/restart
// events are managed in an un-synchronized way, we may end up in a situation where the root is runnable,
// but some of its childern are not.
if(oldRestartCounter != currentBehaviour.getRestartCounter()) {
currentBehaviour.handleRestartEvent();
}
// Need synchronized block (Crais Sayers, HP): What if
// 1) it checks to see if its runnable, sees its not,
// so it begins to enter the body of the if clause