 (spec/def ::unspecified nil?)
 
 (spec/def ::dynamic (partial = :dynamic))
+
+(spec/def ::dynamic-value (spec/cat
+                     :type ::dynamic
+                     :value (spec/? (constantly true))))
 
 (defn value-or-type [type-tag value-tester?]
   (spec/or :type (partial = type-tag)

                               {:key :b, :value-type [:visited [:long [:value 2]]]} 
                               {:key :c, :value-type [:visited [:long [:value 3]]]})}]))

(defn export-primitive [x]
  [:export x])


(defn vec-body? [x]
  (and (map? x)

                          :unspecified ::unspecified ;; <-- a primitive building block
                          :constant ::constant
                          :dynamic ::dynamic
                          :dynamic ::dynamic-value
                          :dynamic symbol?))

(def pair-vec {:default-parent [nil nil]})
