    [clojure.string :as string]
    #?(:clj [clojure.tools.logging :as log])
    #?(:cljs [babel.logjs :as log]) 
-   [dag_unify.core :refer [copy fail? fail-path get-in merge strip-refs unify unifyc]]
+   [dag_unify.core :refer [copy fail? fail-path fail-path-between get-in merge strip-refs unify unifyc]]
    [babel.lexiconfn :refer [get-fail-path sem-impl]]))
 
 (defn exception [error-string]

                           (get-in child [:synsem :cat])))
                   (not *check-parent-and-head-child-cat-equal*))
            (log/warn (str "moreover-head: CHILD CAT DIFFERS FROM HEAD CAT!")))
          (if (= (get-in parent [:synsem :cat])
                 (get-in child [:synsem :cat]))
            (log/debug (str "moreover-head: failcat== " (strip-refs (get-in parent [:rule])) "; "
                            "child: " (get-in child [:surface]) ""))
            (log/debug (str "moreover-head: failcat!= " (strip-refs (get-in parent [:rule])) "; "
                            "child: " (get-in child [:surface]) "")))

          :fail)))))

;; Might be useful to set the following variable to true,

(defn moreover-comp [parent child lexfn-sem-impl]
  (log/trace (str "moreover-comp type parent: " (type parent)))
  (log/trace (str "moreover-comp type comp:" (type child)))
  
  (let [result
        (if (and *check-parent-and-head-child-cat-equal*
                 (not (= (get-in parent [:comp :synsem :cat])
