 (declare lexemes-before-phrases)
 (declare lightning-bolts)
 (declare generate-all)
+(declare not-fail?)
 (declare spec-info)
 
 ;; FIXME: truncate-children=false (the non-default option) is not propagated through all calls,

        bolt-child-synsem (strip-refs (get-in bolt (concat path [:synsem]) :top))
        
        lexical-complements (lazy-shuffle
                                      (filter (fn [lexeme]
                                                (and (not (fail? (unify (strip-refs (get-in lexeme [:synsem] :top))
                                                                        bolt-child-synsem)))))
                                              complement-candidate-lexemes))]
    (filter #(not (fail? %))
            (mapfn (fn [complement]
                     (let [unified
                           (unify (copy bolt)

                      (identical? member1 member2))
                    set2))
            set1)))

(defn not-fail? [arg]
  (not (= :fail arg)))
