           (map vector
                (iterate inc start-i) ;; old line numbers
                (safe-subvec (:lines prev-state) start-i) ;; old lines
-               (safe-subvec (:postline-states prev-state) start-i))))
+               (safe-subvec (:postindent-states prev-state) start-i))))
 
 (defn initial-cached-state
   "build an initial state based on our starting line and previous cache."
-  [{:keys [lines postline-states] :as prev-state} overrides i]
+  [{:keys [lines postline-states postindent-states] :as prev-state} overrides i]
   (let [line-data {:lines (subvec lines 0 i)
+                   :postindent-states (subvec postindent-states 0 i)
                    :postline-states (subvec postline-states 0 i)
                    :line-no (dec i)}
         last-cache (get postline-states (dec i))]

  'reduced' will halt further processing."
  [prev-state state [old-i line cache]]
  (let [state (process-line state line)
        new-cache (last (:postline-states state))
        more? (< (inc old-i) (count (:lines prev-state)))
        can-skip? (= new-cache cache)]
    (if (and can-skip? more?)
      (reduced (fill-rest-with-cache prev-state state old-i))
      state)))

        skip? (and check-indent? (closing-delim? ch))
        at-indent? (and check-indent? (not skip?))
        state (assoc state :process? (not skip?))]
    (if at-indent?
      (-> state
          (close-delims x-pos)
          (commit-cached-state :postindent-states)
          (assoc :track-indent? false
                 :processed-indent? true))
      state)))

(defn update-line
  "Update the state by adding processed character to the line."
