 (defn assert-not-empty [root & key-list]
   (mapv (fn [k] [root :not-empty k]) key-list))
 
-#_(required-keys 'FigOpts :hello :goodbye)
-
-#_(defn doc-type? [x]
-  (and (map? x)
-       (= #{:content :example} (set (keys x)))
-       (let [{:keys [example content]} x]
-         (or (fn? example)
-             (string? example)))))
-
 (defn doc
   ([root type-doc kd]
    (cons [root :doc-type type-doc]
          (mapv (fn [[k d]] [root :doc-key k d]) kd)))
   ([root type-doc]
    (doc root type-doc [])))
-
-#_(index-spec
- (doc 'FigOpts "This is a cool option"
-      {
-       :hello ":hello is needed to say hello"
-       :good ":good is needed to say goodbye"
-       :hey-there {:content "This is docs"
-                   :example "This is an example"}})) 
 
 ;; Direct Implementation
 ;; this is still squirrely

                    (document-key (first correct-type) correction))
                   {:width 40}))

#_{:path (:five),
   :value 5,
   :current-path (),
   :type-sig (RootMap),
   :suggested-path-for-value [:figwheel],
   :expected-type RootMap,
   :actual-type FigOpts,
   :Error :wrong-position-for-value,
}

(defmethod print-error :wrong-position-for-value [{:keys [key value correct-paths correct-type orig-error orig-config type-sig] :as error}]
  (pprint-document (print-wrong-path-error
                    (assoc error :correction (first (first correct-paths)))

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