   (-> form zip/seq-zip zip/down zip/right arrow-line-number))
 
 
-(defn- basename [string]
-  (last (str/split string #"/")))
+(defn compile-time-fallback-position []
+  (list (current-file-name) @fallback-line-number))
 
 
 (defn current-file-name []

  (list (current-file-name)  (:line (meta form))))


(defn compile-time-fallback-position []
  (list (current-file-name) @fallback-line-number))


;; RUNTIME POSITIONS
;; These are positions that determine the file or line at runtime.

(defmacro line-number-known
  "Guess the filename of a file position, but use the given line number."
  [number]
  `[(current-file-name) ~number])


(defn- skip-to-rightmost-leaf
  "When positioned at leftmost position of branch, move to the end form.
   In a tree, that's the rightmost leaf."
  [loc]
  (let [end-form (zip/rightmost loc)]
    (if (zip/branch? end-form)
      (recur (zip/down end-form))
      end-form)))


(defn- replace-loc-line [loc loc-with-line]
  (let [m (fn [loc] (meta (zip/node loc)))
        transferred-meta (if (contains? (m loc-with-line) :line )
                           (assoc (m loc) :line (:line (m loc-with-line)))
                           (dissoc (m loc) :line ))]
    (zip/replace loc (with-meta (zip/node loc) transferred-meta))))


(defn form-with-copied-line-numbers [line-number-source form]
  (loop [loc (zip/seq-zip form)

                 (zip/next line-loc)))))


(defmacro line-number-known
  "Guess the filename of a file position, but use the given line number."
  [number]
  `[(current-file-name) ~number])


(defn positioned-form
  "Make sure the form is annotated with a line number, either
   its original or the given one. Takes either a number or form
