            error)])
       {:success-type typ})))
 
-#_(with-schema (index-spec
-                (spec 'String string?)
-                (spec 'Integer integer?)
-                (spec 'Five 5)
-                (spec 'Map {})
-                (spec 'AnotherInt (ref-schema 'Integer))
-                (spec 'Cljsbuild {:server-port integer?
-                                  :server-ip string?})
-                (or-spec 'IntOrBool
-                      boolean?
-                      (ref-schema 'AnotherInt))
-                (or-spec 'IntOrBoolOrCljs
-                      (ref-schema 'IntOrBool)
-                      (ref-schema 'Cljsbuild))
-                )
-  (all-predicates 'IntOrBool)
-
-  )
-
 ;; TODO this allows a OR reloationship??
 ;; lets formalize this as an and relationship
 ;; the or-spec handles the OR relationship
+
 (defn type-check-value [parent-type value state]
   (if-let [preds (all-predicates parent-type)]
     (let [errors   (map #(type-check-pred % value state) preds)


(defn error-parent-value [{:keys [path orig-config]}]
  (get-in orig-config (reverse (rest path))))


;; analyzing the analysis results
;; This is where the real smarts come in

    (if ky
      [:group
       "-- Docs for key " (color (pr-str k) :bold) " --" 
       (print-key-doc parent-type k ky)
       :break]
      "")))
