                             (access/getx expr-type expr))
   (:default 
    [argmap expr cb]
-   (cb argmap (spec/conform ::type (access/getx expr-value expr)))))
+   (cb argmap (expr-to-typed-value (access/getx expr-value expr)))))
 
 (def empty-argmap {})
 

                    :tag (constantly true)
                    :data ::sized-type))

(spec/def ::sized-type (spec/or :number ::number
                                :record ::record
                                :union ::union
                                :unspecified ::unspecified ;; <-- a primitive building block

(spec/def ::int #(or (instance? java.lang.Integer %)
                     (int? %)))

(spec/def ::dynamic (partial = :dynamic))

(defn value-or-type [type-tag value-tester?]
  (spec/or :type (partial = type-tag)
           :value value-tester?))

(spec/def ::number (value-or-type :number number?))
(spec/def ::double (value-or-type :double double?))
(spec/def ::long (value-or-type :long #(instance? java.lang.Long %)))
(spec/def ::float (value-or-type :float float?))
(spec/def ::bool (value-or-type :boll boolean?))
(spec/def ::int (value-or-type :int int?))


(spec/def ::count number?)
(spec/def ::key keyword?)

