            (target-take target j)))
        (-target-count [this]
          (target-count target))
-       (-target-move [this elem-idx before-idx])
-       (-target-remove [this elem-idx])
-       (-target-clear [this]))
+       (-target-move [this elem-idx before-idx]))
 
      (defn plimit [proj limit]
        (reify IProjection


(defn target-move [this idx before-idx] (-target-move this idx before-idx))

(defn target-remove [this idx] (-target-remove this idx))

(defn target-clear [this] (-target-clear this))

(defprotocol IProjection
  (-project [this target enqueue-fn]))

       (-target-count [this]
         (target-count target))
       (-target-move [this elem-idx before-idx]
         (target-move target elem-idx before-idx)))

     (defn pwrap [proj wrap-fn]
       (reify IProjection
