         node-number counter >>number
         swap >>insn
         H{ } clone >>precedes
+        H{ } clone >>precedes-data
+        H{ } clone >>precedes-control
         H{ } clone >>follows ;
 
 : ready? ( node -- ? ) precedes>> assoc-empty? ;

        [ set-roots ]
    } cleave ;

:: calculate-registers ( node -- registers )
    node children>> [ 0 ] [
        [ [ calculate-registers ] map natural-sort ]

! These need to be numbered so that the same instruction
! will get distinct nodes if it occurs multiple times
TUPLE: node
    precedes-data precedes-control
    number insn precedes follows
    children parent
    registers parent-index ;
