   (get x 1)
   (get x :b)
 
-
   (= eg (fact-shape ::eg "[a] has a [b] with a [c]"))
 
   (fact (fact-shape ::eg "[a] has a [b] with a [c]") #js ["a" "b" "c"])

          (let [out-facts #js []]
            (.call (aget node->update! node) nil node node->state in-facts out-facts)
            (aset node->facts node #js [])
            (if (> (alength out-facts) 0)
              (let [out-nodes (aget node->out-nodes node)
                    min-out-node (areduce out-nodes i min-out-node (+ node 1)

                FilterMap (filter-map-update! (apply (resolve (first (:fun&args flow))) (rest (:fun&args flow))))
                Index (index-update! (:key-ixes flow))
                Lookup (lookup-update! (:index-node flow) (:key-ixes flow) (:val-ixes flow))))))
    (FlowState. node->state node->out-nodes node->facts node->update! trace)))

(defn memory->node [memory]
  (case memory
