function 
    /usr/local/lib/janet/spork/misc.janet  on  line  164 , column  1 
    (dfs  data  visit-leaf  &opt  node-before  node-after  get-children  seen )
    Do  a  depth  first , pre-order  traversal  over  a  data  structure.  Also  
    allow  for  callbacks  before  and  after  visiting  the  children  of  a  
    node.  Also  allow  for  a  custom  `get-children`  function  to  change  
    traversal  as  needed.  Will  detect  cycles  if  an  empty  table  is  passed  
    as  the  `seen`  parameter , which  is  used  to  cache  values  that  have  
    been  visited.