aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2019-10-05 05:13:23 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2019-10-29 17:28:30 +0100
commitb1bbe24c09c0f508d7bc916f08b1ed4d09986df5 (patch)
tree5ea45d1679c831883e41d4cd3658dfce344e2549
parent988f6d72c55a041b9b382143e2548571a3510abc (diff)
fsm: refuse state chg and events after term
Refuse state changes and event dispatch for FSM instances that are already terminating. It is assumed that refusing state changes and events after FSM termination is seen as the sane expected behavior, hence this change in behavior is merged without being configurable. There is no fallout in current Osmocom code trees. fsm_dealloc_test needs a changed expected output, since it is explicitly creating complex FSM structures that terminate. Currently no other C test in Osmocom code needs adjusting. Rationale: Where multiple FSM instances are collaborating (like in osmo-bsc or osmo-msc), a terminating FSM instance often causes events to be dispatched back to itself, or causes state changes in FSM instances that are already terminating. That is hard to avoid, since each FSM instance could be a cause of failure, and wants to notify all the others of that, which in turn often choose to terminate. Another use case: any function that dispatches events or state changes to more than one FSM instance must be sure that after the first event dispatch, the second FSM instance is in fact still allocated. Furthermore, if the second FSM instance *has* terminated from the first dispatch, this often means that no more actions should be taken. That could be done by an explicit check for fsm->proc.terminating, but a more general solution is to do this check internally in fsm.c. In practice, I need this to avoid a crash in libosmo-mgcp-client, when an on_success() event dispatch causes the MGCP endpoint FSM to deallocate. The earlier dealloc-in-main-loop patch fixed part of it, but not all. Change-Id: Ia81a0892f710db86bd977462730b69f0dcc78f8c
-rw-r--r--src/fsm.c15
-rw-r--r--tests/fsm/fsm_dealloc_test.err2288
2 files changed, 307 insertions, 1996 deletions
diff --git a/src/fsm.c b/src/fsm.c
index 6aad37af..1e8909ec 100644
--- a/src/fsm.c
+++ b/src/fsm.c
@@ -630,6 +630,13 @@ static int state_chg(struct osmo_fsm_inst *fi, uint32_t new_state,
const struct osmo_fsm_state *st = &fsm->states[fi->state];
struct timeval remaining;
+ if (fi->proc.terminating) {
+ LOGPFSMSRC(fi, file, line,
+ "FSM instance already terminating, not changing state to %s\n",
+ osmo_fsm_state_name(fsm, new_state));
+ return -EINVAL;
+ }
+
/* validate if new_state is a valid state */
if (!(st->out_state_mask & (1 << new_state))) {
LOGPFSMLSRC(fi, LOGL_ERROR, file, line,
@@ -840,6 +847,14 @@ int _osmo_fsm_inst_dispatch(struct osmo_fsm_inst *fi, uint32_t event, void *data
}
fsm = fi->fsm;
+
+ if (fi->proc.terminating) {
+ LOGPFSMSRC(fi, file, line,
+ "FSM instance already terminating, not dispatching event %s\n",
+ osmo_fsm_event_name(fsm, event));
+ return -EINVAL;
+ }
+
OSMO_ASSERT(fi->state < fsm->num_states);
fs = &fi->fsm->states[fi->state];
diff --git a/tests/fsm/fsm_dealloc_test.err b/tests/fsm/fsm_dealloc_test.err
index 973f3d42..ce506e24 100644
--- a/tests/fsm/fsm_dealloc_test.err
+++ b/tests/fsm/fsm_dealloc_test.err
@@ -45,14 +45,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 1 (__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 1 (__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(root)
@@ -63,23 +56,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(root)
@@ -114,14 +92,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(root)
@@ -132,21 +103,8 @@ DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.aliv
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(root)
@@ -154,42 +112,25 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Deallocated, including all deferred deallocations
@@ -242,14 +183,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 2 (root.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (root.alive(),__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (root.alive(),__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 3 (root.alive(),__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 2 (root.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 1 (root.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(root)
@@ -260,23 +194,8 @@ DLGLOBAL DEBUG 2 (root.alive(),__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 3 (2*root.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 4 (2*root.alive(),__twig1a.cleanup(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 3 (2*root.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (root.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (root.alive(),__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (root.alive(),__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 3 (root.alive(),__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (root.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 1 (root.alive())
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(root)
@@ -311,14 +230,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(root)
@@ -329,21 +241,8 @@ DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 8 (root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(root)
@@ -351,42 +250,25 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 7 (2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
-DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 4 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 3 (root.alive(),_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 2 (root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (2*root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (2*root.alive(),_branch1.cleanup(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 3 (2*root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (root.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 1 (root.alive())
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 2 (root.alive(),root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 1 (root.alive())
DLGLOBAL DEBUG test(root){alive}: Deallocated, including all deferred deallocations
@@ -435,14 +317,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 1 (__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig0b.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig0b.cleanup(),_branch0.alive(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig0b.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG 1 (__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(_branch0)
@@ -459,15 +334,7 @@ DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
DLGLOBAL DEBUG 3 (__twig0a.cleanup(),other.alive(),other.other_gone())
DLGLOBAL DEBUG 2 (__twig0a.cleanup(),other.alive())
DLGLOBAL DEBUG 1 (__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig0a.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig0a.cleanup(),_branch0.alive(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig0a.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig0a.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(_branch0)
@@ -502,14 +369,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(_branch0)
@@ -537,15 +397,7 @@ DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(root){alive}: Deferring: will deallocate with test(_branch0)
DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(_branch0)
@@ -553,43 +405,20 @@ DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())
DLGLOBAL DEBUG test(_branch1){alive}: cleanup()
DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: still exists: child[0]
-DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(_branch0)
DLGLOBAL DEBUG 3 (_branch0.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch0.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(_branch0)
DLGLOBAL DEBUG 1 (_branch0.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 1 (root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 0 (-)
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated, including all deferred deallocations
DLGLOBAL DEBUG --- after term cascade:
DLGLOBAL DEBUG --- all deallocated.
@@ -638,14 +467,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 2 (_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 3 (2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 2 (_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 1 (_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(_branch0)
@@ -662,15 +484,7 @@ DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
DLGLOBAL DEBUG 4 (_branch0.alive(),__twig0a.cleanup(),other.alive(),other.other_gone())
DLGLOBAL DEBUG 3 (_branch0.alive(),__twig0a.cleanup(),other.alive())
DLGLOBAL DEBUG 2 (_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 3 (2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 1 (_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(_branch0)
@@ -705,14 +519,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone(
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(_branch0)
@@ -740,15 +547,7 @@ DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(root){alive}: Deferring: will deallocate with test(_branch0)
DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone(
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(_branch0)
@@ -756,43 +555,20 @@ DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())
DLGLOBAL DEBUG test(_branch1){alive}: cleanup()
DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive(),root.chil
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: still exists: child[0]
-DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(_branch0)
DLGLOBAL DEBUG 4 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 3 (_branch0.alive(),_branch0.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(_branch0)
DLGLOBAL DEBUG 2 (_branch0.alive(),_branch0.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 3 (_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 1 (_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 1 (_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated, including all deferred deallocations
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG --- after destroy-event cascade:
@@ -879,14 +655,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 1 (__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 1 (__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(root)
@@ -897,23 +666,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(root)
@@ -948,15 +702,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(root)
@@ -964,42 +710,25 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Deallocated, including all deferred deallocations
@@ -1089,14 +818,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 1 (__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 1 (__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(root)
@@ -1107,23 +829,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(root)
@@ -1158,15 +865,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(root)
@@ -1174,42 +873,25 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Deallocated, including all deferred deallocations
@@ -1288,14 +970,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 1 (__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 1 (__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(root)
@@ -1306,23 +981,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(root)
@@ -1358,21 +1018,8 @@ DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.aliv
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(root)
@@ -1380,42 +1027,25 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Deallocated, including all deferred deallocations
@@ -1498,14 +1128,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 1 (__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 1 (__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(root)
@@ -1516,23 +1139,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(root)
@@ -1568,21 +1176,8 @@ DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.aliv
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(root)
@@ -1590,42 +1185,25 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Deallocated, including all deferred deallocations
@@ -1671,14 +1249,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 1 (__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 1 (__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(_branch1)
@@ -1706,15 +1277,7 @@ DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(root){alive}: Deferring: will deallocate with test(_branch1)
DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(_branch1)
@@ -1749,14 +1312,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(_branch1)
@@ -1767,21 +1323,8 @@ DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.aliv
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(_branch1)
@@ -1789,43 +1332,20 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deferring: will deallocate with test(_branch1)
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(_branch1)
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 1 (root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 0 (-)
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: Deallocated, including all deferred deallocations
DLGLOBAL DEBUG --- after term cascade:
DLGLOBAL DEBUG --- all deallocated.
@@ -1874,14 +1394,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 2 (_branch1.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 3 (2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG 2 (_branch1.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 1 (_branch1.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(_branch1)
@@ -1909,15 +1422,7 @@ DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 3 (_branch1.alive(),__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(root){alive}: Deferring: will deallocate with test(_branch1)
DLGLOBAL DEBUG 2 (_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 3 (2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (_branch1.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 1 (_branch1.alive())
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(_branch1)
@@ -1952,14 +1457,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone(
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(_branch1)
@@ -1970,21 +1468,8 @@ DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanu
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 8 (_branch1.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone(
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(_branch1)
@@ -1992,43 +1477,20 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.chil
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deferring: will deallocate with test(_branch1)
DLGLOBAL DEBUG 4 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 3 (_branch1.alive(),_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(_branch1)
DLGLOBAL DEBUG 2 (_branch1.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (_branch1.alive(),_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 3 (_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (_branch1.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 1 (_branch1.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 1 (_branch1.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: Deallocated, including all deferred deallocations
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG --- after destroy-event cascade:
@@ -2090,14 +1552,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 4 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(__twig1a)
@@ -2132,14 +1587,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 9 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_bran
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(__twig1a)
@@ -2150,21 +1598,8 @@ DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 9 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 9 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_bran
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(__twig1a)
@@ -2172,36 +1607,17 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 9 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
-DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deferring: will deallocate with test(__twig1a)
DLGLOBAL DEBUG 5 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 4 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(__twig1a)
DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 4 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(__twig1a)
@@ -2212,22 +1628,10 @@ DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(root){alive}: Deferring: will deallocate with test(__twig1a)
DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 1 (_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 0 (-)
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated, including all deferred deallocations
DLGLOBAL DEBUG --- after term cascade:
DLGLOBAL DEBUG --- all deallocated.
@@ -2291,14 +1695,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(__twig1a)
@@ -2333,14 +1730,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 10 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0
-DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(__twig1a)
@@ -2351,21 +1741,8 @@ DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.clea
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 10 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0
-DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 10 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(__twig1a)
@@ -2373,36 +1750,17 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 10 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branc
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch
-DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deferring: will deallocate with test(__twig1a)
DLGLOBAL DEBUG 6 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(__twig1a)
DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(__twig1a)
@@ -2413,22 +1771,10 @@ DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(root){alive}: Deferring: will deallocate with test(__twig1a)
DLGLOBAL DEBUG 2 (__twig1a.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (__twig1a.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 1 (__twig1a.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.alive(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 1 (__twig1a.alive())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated, including all deferred deallocations
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG --- after destroy-event cascade:
@@ -2509,23 +1855,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(root)
@@ -2560,14 +1891,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(root)
@@ -2578,21 +1902,8 @@ DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.aliv
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(root)
@@ -2600,42 +1911,25 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Deallocated, including all deferred deallocations
@@ -2719,23 +2013,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(root)
@@ -2770,14 +2049,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(root)
@@ -2788,21 +2060,8 @@ DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.aliv
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(root)
@@ -2810,42 +2069,25 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(root)
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Deallocated, including all deferred deallocations
@@ -2903,14 +2145,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 2 (other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(other)
@@ -2921,21 +2156,8 @@ DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0a.cleanup())
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 4 (other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.alive())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 5 (other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.alive(),other.other_gone())
-DLGLOBAL DEBUG 4 (other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.alive())
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 2 (other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(other)
@@ -2975,14 +2197,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (other.cleanup(),2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(other)
@@ -3010,15 +2225,7 @@ DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 4 (other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(root){alive}: Deferring: will deallocate with test(other)
DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (other.cleanup(),2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(other)
@@ -3026,22 +2233,10 @@ DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),_branch1.cleanup())
DLGLOBAL DEBUG test(_branch1){alive}: cleanup()
DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 4 (other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(other)
DLGLOBAL DEBUG 1 (other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
@@ -3106,14 +2301,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Deferring: will deallocate with test(other)
@@ -3124,21 +2312,8 @@ DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanu
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 5 (2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 6 (2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 5 (2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Deferring: will deallocate with test(other)
@@ -3178,14 +2353,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Deferring: will deallocate with test(other)
@@ -3213,15 +2381,7 @@ DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(root){alive}: Deferring: will deallocate with test(other)
DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1a){alive}: Deferring: will deallocate with test(other)
@@ -3229,22 +2389,10 @@ DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())
DLGLOBAL DEBUG test(_branch1){alive}: cleanup()
DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: Deferring: will deallocate with test(other)
DLGLOBAL DEBUG 2 (other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
@@ -3303,14 +2451,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 1 (__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 1 (__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -3322,23 +2463,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -3374,14 +2500,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -3393,21 +2512,8 @@ DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.aliv
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -3416,38 +2522,19 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
@@ -3455,6 +2542,8 @@ DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Freeing instance
@@ -3509,14 +2598,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 2 (root.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (root.alive(),__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (root.alive(),__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 3 (root.alive(),__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 2 (root.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 1 (root.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -3528,23 +2610,8 @@ DLGLOBAL DEBUG 2 (root.alive(),__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 3 (2*root.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 4 (2*root.alive(),__twig1a.cleanup(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 3 (2*root.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (root.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (root.alive(),__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (root.alive(),__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 3 (root.alive(),__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (root.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 1 (root.alive())
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -3580,14 +2647,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -3599,21 +2659,8 @@ DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 8 (root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -3622,38 +2669,19 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 7 (2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
-DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 4 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 3 (root.alive(),_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 2 (root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (2*root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (2*root.alive(),_branch1.cleanup(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 3 (2*root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (root.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 1 (root.alive())
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
@@ -3661,6 +2689,8 @@ DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
DLGLOBAL DEBUG 2 (root.alive(),root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 1 (root.alive())
DLGLOBAL DEBUG test(root){alive}: Freeing instance
@@ -3711,14 +2741,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 1 (__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig0b.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig0b.cleanup(),_branch0.alive(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig0b.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG 1 (__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -3736,15 +2759,7 @@ DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
DLGLOBAL DEBUG 3 (__twig0a.cleanup(),other.alive(),other.other_gone())
DLGLOBAL DEBUG 2 (__twig0a.cleanup(),other.alive())
DLGLOBAL DEBUG 1 (__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig0a.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig0a.cleanup(),_branch0.alive(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig0a.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig0a.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -3780,14 +2795,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -3817,15 +2825,7 @@ DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.aliv
DLGLOBAL DEBUG test(root){alive}: Freeing instance
DLGLOBAL DEBUG test(root){alive}: Deallocated
DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -3834,47 +2834,24 @@ DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())
DLGLOBAL DEBUG test(_branch1){alive}: cleanup()
DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: still exists: child[0]
-DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 3 (_branch0.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch0.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 1 (_branch0.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 1 (root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 0 (-)
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG --- after term cascade:
DLGLOBAL DEBUG --- all deallocated.
*** loop_ctx contains 33 blocks, deallocating.
@@ -3923,14 +2900,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 2 (_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 3 (2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 2 (_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 1 (_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -3948,15 +2918,7 @@ DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
DLGLOBAL DEBUG 4 (_branch0.alive(),__twig0a.cleanup(),other.alive(),other.other_gone())
DLGLOBAL DEBUG 3 (_branch0.alive(),__twig0a.cleanup(),other.alive())
DLGLOBAL DEBUG 2 (_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 3 (2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 1 (_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -3992,14 +2954,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone(
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -4029,15 +2984,7 @@ DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanu
DLGLOBAL DEBUG test(root){alive}: Freeing instance
DLGLOBAL DEBUG test(root){alive}: Deallocated
DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone(
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -4046,47 +2993,24 @@ DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())
DLGLOBAL DEBUG test(_branch1){alive}: cleanup()
DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive(),root.chil
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: still exists: child[0]
-DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 4 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 3 (_branch0.alive(),_branch0.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 2 (_branch0.alive(),_branch0.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 3 (_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 1 (_branch0.alive())
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 1 (_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG --- after destroy-event cascade:
DLGLOBAL DEBUG --- all deallocated.
@@ -4175,14 +3099,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 1 (__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 1 (__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -4194,23 +3111,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -4246,15 +3148,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -4263,38 +3157,19 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
@@ -4302,6 +3177,8 @@ DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Freeing instance
@@ -4394,14 +3271,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 1 (__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 1 (__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -4413,23 +3283,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -4465,15 +3320,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -4482,38 +3329,19 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
@@ -4521,6 +3349,8 @@ DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Freeing instance
@@ -4602,14 +3432,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 1 (__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 1 (__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -4621,23 +3444,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -4674,21 +3482,8 @@ DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.aliv
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -4697,38 +3492,19 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
@@ -4736,6 +3512,8 @@ DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Freeing instance
@@ -4821,14 +3599,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 1 (__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 1 (__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -4840,23 +3611,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -4893,21 +3649,8 @@ DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.aliv
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -4916,38 +3659,19 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
@@ -4955,6 +3679,8 @@ DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Freeing instance
@@ -5001,14 +3727,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 1 (__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 1 (__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -5038,15 +3757,7 @@ DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(root){alive}: Freeing instance
DLGLOBAL DEBUG test(root){alive}: Deallocated
DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -5082,14 +3793,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -5101,21 +3805,8 @@ DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.aliv
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -5124,47 +3815,24 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 1 (root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 0 (-)
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG --- after term cascade:
DLGLOBAL DEBUG --- all deallocated.
*** loop_ctx contains 33 blocks, deallocating.
@@ -5213,14 +3881,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 2 (_branch1.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 3 (2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG 2 (_branch1.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 1 (_branch1.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -5250,15 +3911,7 @@ DLGLOBAL DEBUG 3 (_branch1.alive(),__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(root){alive}: Freeing instance
DLGLOBAL DEBUG test(root){alive}: Deallocated
DLGLOBAL DEBUG 2 (_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 3 (2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (_branch1.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 1 (_branch1.alive())
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -5294,14 +3947,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone(
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -5313,21 +3959,8 @@ DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanu
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 8 (_branch1.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone(
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -5336,47 +3969,24 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 8 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.chil
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 4 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 3 (_branch1.alive(),_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 2 (_branch1.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (_branch1.alive(),_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 3 (_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (_branch1.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 1 (_branch1.alive())
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 1 (_branch1.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG --- after destroy-event cascade:
DLGLOBAL DEBUG --- all deallocated.
@@ -5438,14 +4048,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 4 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -5481,14 +4084,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 9 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_bran
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -5500,21 +4096,8 @@ DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 9 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 9 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_bran
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -5523,38 +4106,19 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 9 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 8 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
-DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 7 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 5 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 4 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 4 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
@@ -5567,24 +4131,12 @@ DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(root){alive}: Freeing instance
DLGLOBAL DEBUG test(root){alive}: Deallocated
DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 1 (_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 0 (-)
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG --- after term cascade:
DLGLOBAL DEBUG --- all deallocated.
*** loop_ctx contains 33 blocks, deallocating.
@@ -5648,14 +4200,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -5691,14 +4236,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 10 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0
-DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -5710,21 +4248,8 @@ DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.clea
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 10 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0
-DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 10 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -5733,38 +4258,19 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 10 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branc
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch
-DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 6 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
@@ -5777,24 +4283,12 @@ DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),root.alive())
DLGLOBAL DEBUG test(root){alive}: Freeing instance
DLGLOBAL DEBUG test(root){alive}: Deallocated
DLGLOBAL DEBUG 2 (__twig1a.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 2 (__twig1a.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 1 (__twig1a.alive())
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.alive(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 1 (__twig1a.alive())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG --- after destroy-event cascade:
DLGLOBAL DEBUG --- all deallocated.
@@ -5877,23 +4371,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -5929,14 +4408,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -5948,21 +4420,8 @@ DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.aliv
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -5971,38 +4430,19 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
@@ -6010,6 +4450,8 @@ DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Freeing instance
@@ -6096,23 +4538,8 @@ DLGLOBAL DEBUG 1 (__twig1a.cleanup())
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a
DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (__twig1a.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -6148,14 +4575,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -6167,21 +4587,8 @@ DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.aliv
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -6190,38 +4597,19 @@ DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
DLGLOBAL DEBUG test(_branch0){alive}: cleanup()
DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0
-DLGLOBAL DEBUG test(root){alive}: still exists: child[1]
-DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done
DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch0){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())
DLGLOBAL DEBUG test(other){alive}: Freeing instance
DLGLOBAL DEBUG test(other){alive}: Deallocated
DLGLOBAL DEBUG 1 (_branch1.cleanup())
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 1 (_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
@@ -6229,6 +4617,8 @@ DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
DLGLOBAL DEBUG 1 (root.cleanup())
DLGLOBAL DEBUG test(root){alive}: cleanup()
DLGLOBAL DEBUG test(root){alive}: scene forgets root
+DLGLOBAL DEBUG test(root){alive}: removing reference root.other[0] -> __twig1a
+DLGLOBAL DEBUG test(__twig1a){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
DLGLOBAL DEBUG test(root){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
DLGLOBAL DEBUG test(root){alive}: Freeing instance
@@ -6287,14 +4677,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 2 (other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -6306,21 +4689,8 @@ DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0a.cleanup())
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 4 (other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.alive())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 5 (other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.alive(),other.other_gone())
-DLGLOBAL DEBUG 4 (other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.alive())
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 2 (other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -6362,14 +4732,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (other.cleanup(),2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -6399,15 +4762,7 @@ DLGLOBAL DEBUG 4 (other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive
DLGLOBAL DEBUG test(root){alive}: Freeing instance
DLGLOBAL DEBUG test(root){alive}: Deallocated
DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (other.cleanup(),2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -6416,24 +4771,12 @@ DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),_branch1.cleanup())
DLGLOBAL DEBUG test(_branch1){alive}: cleanup()
DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 5 (other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 4 (other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 1 (other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 0 (-)
@@ -6499,14 +4842,7 @@ DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)
DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b
-DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done
DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance
@@ -6518,21 +4854,8 @@ DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanu
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()
DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a
DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other
-DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE
-DLGLOBAL DEBUG 5 (2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)
-DLGLOBAL DEBUG 6 (2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())
-DLGLOBAL DEBUG 5 (2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())
-DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a
-DLGLOBAL DEBUG test(_branch0){alive}: No more children
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())
-DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())
+DLGLOBAL DEBUG test(other){alive}: FSM instance already terminating, not dispatching event EV_OTHER_GONE
+DLGLOBAL DEBUG test(_branch0){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done
DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch0.alive())
DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance
@@ -6574,14 +4897,7 @@ DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)
DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()
DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b
-DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done
DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance
@@ -6611,15 +4927,7 @@ DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanu
DLGLOBAL DEBUG test(root){alive}: Freeing instance
DLGLOBAL DEBUG test(root){alive}: Deallocated
DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone())
-DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a
-DLGLOBAL DEBUG test(_branch1){alive}: No more children
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())
-DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())
+DLGLOBAL DEBUG test(_branch1){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done
DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance
@@ -6628,24 +4936,12 @@ DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)
DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())
DLGLOBAL DEBUG test(_branch1){alive}: cleanup()
DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive(),root.child_gone())
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1
-DLGLOBAL DEBUG test(root){alive}: No more children
-DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done
DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())
DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance
DLGLOBAL DEBUG test(_branch1){alive}: Deallocated
-DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE
-DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),root.alive())
-DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)
-DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.
-DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())
+DLGLOBAL DEBUG test(root){alive}: FSM instance already terminating, not dispatching event EV_CHILD_GONE
DLGLOBAL DEBUG 2 (other.alive(),other.cleanup())
DLGLOBAL DEBUG test(other){alive}: cleanup() done
DLGLOBAL DEBUG 1 (other.alive())