     (.log js/console (str "lowTimeIdx = " lowTimeIdx ", highTimeIdx = " highTimeIdx))
     (:augTTLessonInfoMapToShift
       (reduce
-        (fn [reduceResult [rowIdx ttRow]]
-          (if (empty? ttRow)
+        (fn [reduceResult rowIdx]
+          (if (timetable-row-empty? day rowIdx)
               ; Skip empty row
               reduceResult
 

                                     (range time-helper/TIME-INDEX-MIN
                                            (inc time-helper/TIME-INDEX-MAX))))}
        ; go through each row in the day, below the current row
        (drop (inc rowNum) (map vector (range (count ttDay)) ttDay))))))

(defn- shift-lesson-to-row!
  "Shifts a lesson from its original row up to the given row.

              (let [occupiedVec (:occupiedVec reduceResult)

                    ttLessonInfoToShift
                    (timetable-row-get-lessons-satisfying-pred
                      day rowIdx
                      (fn [{:keys [startTime endTime]}]
                        (and (>= startTime lowTimeIdx)
                             (<= (dec endTime) highTimeIdx)
                             (not-occupied? occupiedVec startTime endTime))))]
                (.log js/console "suspect above")
                (.log js/console (str "rowIdx = " rowIdx))
                (.log js/console (str "occupiedVec = " (.stringify js/JSON (clj->js occupiedVec))))
