                {:arg arg :resolver-tags resolver-ks})))))
 
 (defn- resolvers-for
+  "Peforms a first pass at argument resolution, looking for various meta-data or
+  naming conventions to convert from an argument, to an argument resolver factory, to
+  an argument resolver.
+
+  Returns a map from argument to argument resolver."
   [arglist resolvers-map]
   (into {}
     (keep (fn [arg]

            arglist (first (:arglists metadata))
            arg-resolvers (merge
                            extra-arg-resolvers
                            (binding [*ns* ns]
                              (eval (:arg-resolvers metadata))))
            handler (cond->


(defn- resolver-entry
  [arg resolver]
  (cond
    (keyword? resolver)
    (if-let [f (get standard-resolver-factories resolver)]
      [arg (f arg)]
      (throw (ex-info (format "Keyword %s does not identify a known argument resolver." resolver)
                      {:arg arg :resolver resolver})))

    (ifn? resolver)
    [arg resolver]

    :else
    (throw (ex-info (format "Argument resolver value `%s' is neither a keyword not a function." resolver)
                    {:arg arg :resolver resolver}))))

(defn- maybe-resolver-by-tag
  [arg]
