 ;; [t1 t0] interval between t0 and t1
 ;; [t0 d] interval between t0 and t0+d, where d is a given duration
 ;; [d t1] interval between t1-d and t1, where d is a given duration
+
 (defn interval
   [a b]
   (cond

           \F (recur
                (next xs)
                (next ys)
                (clojure.core/conj result y))
           \o (recur
                (cons (narrow x (t/beginning y) (t/end x)) (next xs))
                (cons (narrow y (t/end x) (t/end y)) (next ys))

             (\P \M) (recur xs (next ys) result)
             (\f \d \e) (recur (next xs) (next ys) result)
             \s (recur (next xs) ys result)
             (\S \O)
             (recur (cons (narrow x (t/end y) (t/end x)) (next xs)) (next ys) result)
             \F (recur (next xs) (next ys) (clojure.core/conj result (narrow x (t/beginning x) (t/beginning y))))
             \o (recur (next xs) ys (clojure.core/conj result (narrow x (t/beginning x) (t/beginning y))))
             \D (recur (cons (narrow x (t/end y) (t/end x)) (next xs))
                       (next ys)
                       (clojure.core/conj result (narrow x (t/beginning x) (t/beginning y))))))
         (apply clojure.core/conj result xs))
