                         x))
                     resolvers)]
     (pc/register {} resolvers)))
+
+(defn oir-index [resolvers]
+  (::pc/index-oir (register-index resolvers)))
 
 (defn base-graph-env []
   (assoc (pcp/base-env)


    (testing "broken chain"
      (is (= (compute-run-graph
               {::resolvers [{::pc/sym    'b
                              ::pc/input  #{:a}
                              ::pc/output [:b]}]
                ::eql/query [:b]})
             '#::pcp{:nodes             {}
                     :index-syms        {}
                     :unreachable-attrs #{:a :b}
                     :unreachable-syms  #{b}}))

      (is (= (compute-run-graph
               {::resolvers [{::pc/sym    'b
                              ::pc/input  #{:a}
                              ::pc/output [:b]}
                             {::pc/sym    'b1
                              ::pc/input  #{:a}
                              ::pc/output [:b]}]
                ::eql/query [:b]})
             '#::pcp{:nodes             {}
                     :index-syms        {}
                     :unreachable-attrs #{:a :b}


    (testing "partial cycle"
      (is (= (compute-run-graph
               {::pc/index-oir '{:a {#{:c} #{a}
                                     #{}   #{a1}}
                                 :b {#{:a} #{b}}
                                 :c {#{:b} #{c}}
                                 :d {#{} #{d}}}
                ::eql/query    [:c :a]})
             '{::pcp/nodes             {1 {::pc/sym               c
                                           ::pcp/node-id          1
                                           ::pcp/requires         {:c {}}
