+;; gorilla-repl.fileformat = 1
+
+;; @@
 (ns clojush.pushgp.genetic-operators
   (:use [clojush util random individual globals interpreter translate pushstate]
         clojush.instructions.tag

                                           (:ancestors parent1)))
        :is-random-replacement
        (if use-child false true))))

                       (produce-child-genome-by-autoconstruction 
                         parent1-genome parent2-genome false argmap)
                       parent1-genome)
        genome-error #(do (swap! evaluations-count inc)
                        (error-function (translate-plush-genome-to-push-program 
                                          {:genome %} 
                                          argmap)))
        ;child-errors (genome-error child-genome)
        make-child #(produce-child-genome-by-autoconstruction % % false argmap)
        gc1-errors (genome-error (make-child child-genome))
        gc2-errors (genome-error (make-child child-genome))
        use-child (and 
                    ;(not= child-errors (:errors parent1))
                    ;(not= child-errors (:errors parent2))
                    (not= gc1-errors gc2-errors)
                    (not (some #{gc1-errors} [(:errors parent1) (:errors parent2)]))
                    (not (some #{gc2-errors} [(:errors parent1) (:errors parent2)]))
                    )

        new-genome (if use-child
                     child-genome
                     (random-plush-genome max-genome-size-in-initial-program atom-generators argmap))]
