     (log/trace (str "moreover-head (candidate) parent: [" (get-in parent [:rule]) "] '" (morph parent) "' sem:    " (strip-refs (get-in parent '(:synsem :sem) :no-semantics))))
     (log/trace (str "moreover-head (candidate) head child: [" (get-in parent [:child]) "] '" (morph child) "' sem:" (strip-refs (get-in child '(:synsem :sem) :top))))
     (let [head-pre-checks (head-pre-checks parent child)
+          ;; TODO: replace head-pre-checks with head-pre-checks2
+          ;;head-pre-checks2 (head-pre-checks2 parent child)
           result
           (if head-pre-checks
             (do

   (fail? (unifyc (get-in parent [:head :synsem :subcat :2] :top)
                  (get-in child [:synsem :subcat :2] :top)))))

(def comp-precheck-pairs
  [{:parent [:comp :synsem :cat]
    :childc [:synsem :cat]}

  (log/trace (str "moreover-comp: child cat: " (get-in child [:synsem :cat])))
  (log/trace (str "moreover-comp: parent comp cat: " (get-in parent [:comp :synsem :cat])))
  
  (let [;pre-check2 (comp-pre-checks2 parent child) ;; TODO: not working yet: fix
        pre-check (comp-pre-checks parent child)
        
        result
