         ~@specs))))
 
 
-(comment         
+(do #_comment         
 
  (defprotocol P2
    (p21 [x y])

      (cons [proto methods]
            (parse-protocols-and-method-pairs more)))))

(defn- parse-protocols-and-methods [args]
  (let [pairs (parse-protocols-and-method-pairs args)]
    (assert (apply distinct? (cons nil (map first pairs))))
    (into {} pairs)))

(defn merge-traits [& traits]
  (let [bindings  (vec (apply concat (map first traits)))]
    (assert (apply distinct? (cons nil (take-nth 2 bindings))))
    [bindings
     (reduce util/merge-disjoint {} (map second traits))]))

(defn parse-trait-form [traits]
  (vec (map #(if (list? %)


 (defprotocol P0)

 (deftrait +foo+ [x] [y (atom x)] [] P2 (p21 [foo z] (+ z @y)) (p22 [foo] (swap! y inc)) P0)

                                        ; (deftrait +bar+ [w] [z (inc w)] [(+foo+ (* w 2))] P1 (p11 [bar y] (- y w)))
 )

