|:: focus on node $n :focus: $| :: ensure node $n exists :focus: $n |:: focus on node $n| :: ensure node $n exists :focus: $n ||:nodes: root horizontal |:: create a node under root :unique ID: $x?| :: go to the next unique ID :edges: root $x :nodes: $x horizontal |:: create a node under $n :unique ID: $x?| :: ensure node $n exists :: go to the next unique ID :edges: $n $x :nodes: $x horizontal |:: set node $n to use a $s split :nodes: $n $| :nodes: $n $s :: reset nodes |:: set node $n to use a $s split :not found: $n| :: error :message: $n is not a node |:: set node $n to use a $s split?| :: find node $n |:: find node $n :nodes: $n $?| |:: find node $n? :nodes: $x $y| :checked nodes: $x $y |:: find node $n| :not found: $n :: reset nodes |:: ensure node $n exists :not found: $n| :: error :message: $n is not a node |:: ensure node $n exists :nodes: $n $?| :: reset nodes |:: ensure node $n exists?| :: find node $n |:: reset nodes? :checked nodes: $x $y| :nodes: $x $y |:: reset nodes| ||:unique ID: 0 |:: go to the next unique ID :@math: $x| :unique ID: $x |:: go to the next unique ID? :unique ID: $n| :@math: add $n 1 ||:: create a node under root :: create a node under 0 :: create a node under 0 :: create a node under 1 :: create a node under 3 :: set node 0 to use a vertical split :: set node 3 to use a vertical split