 ;; 2) called with both a child1 and a child2, but child2's supplied value is nil:
 ;;    should be treated the same as empty list.
 (defn over [parents child1 & [child2]]
+  (log/trace (str "over:" (count parents)))
   (cond (vector? child1)
         (over parents (seq child1) child2)
 

(def ^:dynamic *throw-exception-if-failed-to-add-complement* false)

(defn moreover-comp [parent child lexfn-sem-impl]
  (log/debug (str "moreover-comp type parent: " (type parent)))
  (log/debug (str "moreover-comp type comp:" (type child)))
  (log/debug (str "moreover-comp: child cat: " (get-in child [:synsem :cat])))
  (log/debug (str "moreover-comp: parent comp cat: " (get-in parent [:comp :synsem :cat])))
  

(defn overc [parent comp]
  "add given child as the comp child of the phrase: parent."

  (log/trace (str "set? parent:" (set? parent)))
  (log/trace (str "seq? parent:" (seq? parent)))
  (log/trace (str "seq? comp:" (seq? comp)))

  (log/trace (str "type of parent: " (type parent)))
  (log/trace (str "type of comp  : " (type comp)))
  (log/trace (str "nil? comp  : " (nil? comp)))

  (cond
   (nil? comp) nil
