     (println (apply str (interpose " -> " cat)))))
 
 (def UGEN-RATE-SORT-FN
-  (apply hash-map (flatten (map reverse (indexed UGEN-RATE-PRECEDENCE)))))
+  (zipmap UGEN-RATE-PRECEDENCE (range (count UGEN-RATE-PRECEDENCE)))
 
 (defn- print-ugen-rates [rates]
   (let [rates (sort-by UGEN-RATE-SORT-FN rates)]

        normal-args    (map first (remove pred args-specs))
        to-append      (filter pred args-specs)
        to-append-args (map first to-append)
        args           (flatten (conj normal-args to-append-args))
        ugen           (assoc ugen :args args)]
    (if-let [n-outs-arg (first (filter #(= :append-sequence-set-num-outs (second %))
                                       to-append))]
      (assoc ugen :n-outputs (count (first n-outs-arg)))
      ugen)))

(defn add-default-args [spec ugen]
  (let [args (:args ugen)

(defn- with-floated-args [spec ugen]
  (assoc ugen :args (floatify (:args ugen))))

(defn- with-init-fn
  "Creates the final argument initialization function which is applied to arguments
  at runtime to do things like re-ordering and automatic filling in of arguments.
