(* get the node_statuses for the first child, next sibling and parent *)
let ps = unsafe_get_status status (T.preorder tree parent) in
(* get the node_statuses for the first child, next sibling and parent *)
let ps = unsafe_get_status status (T.preorder tree parent) in
(* evaluate the transitions with all this statuses *)
let status1 = if status0.NodeStatus.node.todo == StateSet.empty then status0 else begin
let status1 = eval_trans auto cache2 cache5 tag fcs nss ps status0 in
(* evaluate the transitions with all this statuses *)
let status1 = if status0.NodeStatus.node.todo == StateSet.empty then status0 else begin
let status1 = eval_trans auto cache2 cache5 tag fcs nss ps status0 in
(* update the cache if the status of the node changed *)
if status1 != status0 then status.(node_id) <- status1;
status1
(* update the cache if the status of the node changed *)
if status1 != status0 then status.(node_id) <- status1;
status1
(* update the status *)
let status2 = if status1.NodeStatus.node.todo == StateSet.empty then status1 else begin
let status2 = eval_trans auto cache2 cache5 tag fcs1 nss ps status1 in
(* update the status *)
let status2 = if status1.NodeStatus.node.todo == StateSet.empty then status1 else begin
let status2 = eval_trans auto cache2 cache5 tag fcs1 nss ps status1 in
let nss1 = unsafe_get_status status ns_id in
let status3 = if status2.NodeStatus.node.todo == StateSet.empty then status2 else begin
let status3 = eval_trans auto cache2 cache5 tag fcs1 nss1 ps status2 in
let nss1 = unsafe_get_status status ns_id in
let status3 = if status2.NodeStatus.node.todo == StateSet.empty then status2 else begin
let status3 = eval_trans auto cache2 cache5 tag fcs1 nss1 ps status2 in
|| StateSet.empty != status3.NodeStatus.node.todo
in
Bitvector.unsafe_set unstable node_id unstable_self;
|| StateSet.empty != status3.NodeStatus.node.todo
in
Bitvector.unsafe_set unstable node_id unstable_self;