let rec process_node_scripts (pr: page_ref) (dr: node_ref) (b: b)
: b * output_event list * task list =
assert (page_valid pr b);
assert (node_valid dr b);
let (b', qes, oes) = process_node_scripts_aux pr dr b in
begin match page_win pr b with
| None ->
(b', oes, [])
| Some(wr) ->
let p = page_assoc_valid pr b' in
let (exprs, qes') = split_queued_exprs (p.page_script_queue @ qes) in
let p' = { p with page_script_queue = qes' } in
let b'' = page_update pr p' b' in
let task e = {
task_win = wr;
task_expr = e;
} in
(b'', oes, List.map task exprs)
end