 
 (defn- query|scan-conditions
   "{<attr> [operator <val-or-vals>] ...} -> {<attr> Condition ...}"
-  [conditions]
+  [conditions serializer]
   (when (seq conditions)
     (utils/name-map
      (fn [[operator val-or-vals & more :as condition]]

        (fn [table-request]
          (reduce into []
            (for [action (keys table-request)
                  :let [items (attr-multi-vs (table-request action))]]
              (mapv (partial write-request action) items))))
        requests)))))


             (.scan (db-client client-opts)
               (doto-cond [g (ScanRequest.)]
                 :always (.setTableName (name table))
                 attr-conds      (.setScanFilter        (query|scan-conditions g (or (:serializer client-opts) default-serializer)))
                 last-prim-kvs   (.setExclusiveStartKey
                                  ((clj-item->db-item (or (:serializer client-opts) default-serializer)) last-prim-kvs))
                 limit           (.setLimit             (int g))
                 total-segments  (.setTotalSegments     (int g))
                 segment         (.setSegment           (int g))
                 (coll?* return) (.setAttributesToGet (mapv name return))
                 return-cc? (.setReturnConsumedCapacity (utils/enum :total))
                 (and return (not (coll?* return)))
                 (.setSelect (utils/enum return))))
             (or (:deserializer client-opts) default-deserializer)))]
    (merge-more run1 span-reqs (run1 last-prim-kvs))))

(defn scan-parallel
