 (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])

                           (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,

                                    ":'" (morph result) "'"))
              debug (log/debug (str "moreover-head: pass:     " (strip-refs (get-in parent [:rule])) " -> "
                                    "[" (get-in child [:surface]) "]"))
              debug
              (let [p-sc (get-in parent [:head :synsem :subcat :1 :cat] :top)
                    c-sc (get-in child [:synsem :subcat :1 :cat] :top)]
                (if (fail? (unify p-sc c-sc))
                  (do
                    (log/debug (str "moreover-head: pass: parent sc:" (get-in parent [:head :synsem :subcat :1 :cat] :none)))
                    (log/debug (str "moreover-head: pass: head sc:  " (get-in child [:synsem :subcat :1 :cat] :none))))))
              debug (log/trace (str " resulting sem: " (strip-refs (get-in result '(:synsem :sem)))))]
          result)

