        (reify IProjection
          (-project [this target enqueue-fn]
            (let [pproj (OffsetProjection. offset target nil)]
-             (target-init target pproj)
-             (project proj pproj enqueue-fn)))))
+             (set! (.-source pproj) (project proj pproj enqueue-fn))
+             pproj))))
 
      (deftype LimitProjection [offset source target]
        Object

         (wrap wrap-fn (source-pull source idx)))
       
       IProjectionTarget
       (-target-init [this src]
         (set! source src))
       (-target-insert [this elem before-idx]
         (target-insert target (wrap wrap-fn elem) before-idx))
       (-target-peek [this i]

     (defn plimit [proj limit]
       (reify IProjection
         (-project [this target enqueue-fn]
           (let [pproj (LimitProjection. limit proj target)]
             (set! (.-source pproj) (project proj pproj enqueue-fn))
             pproj))))
     

     (defn- cmap2* [f keyset-cursor
                    {:keys [filter sort offset limit placeholder-idx placeholder] :as opts}]
