   []
   (println "Setting up queue creation for:" queue-setup)
   (let [expr (condp (fn [^String v ^String s] (.startsWith s v)) queue-setup
+               "ArrayBlockingQueue" `(ArrayBlockingQueue. queue-size)
                "LinkedBlockingQueue" `(LinkedBlockingQueue. queue-size)
-               "ArrayBlockingQueue" `(ArrayBlockingQueue. queue-size)
                "LinkedTransferQueue" `(LinkedTransferQueue.))]
     (println expr)
     expr))

(defmacro enqueue
  [queue data enqueued-counter dropped-counter]
  (println "Enqueueing data via:")
  (let [expr (condp (fn [^String v ^String s] (.endsWith s v)) queue-setup
               "add-counted-yield" `(if (< (.size ~queue) queue-size)
                                      (do
                                        (.add ~queue ~data)

;                  "ArrayBlockingQueue_put"))]
;                  "ArrayBlockingQueue_put-counted-yield"))]
                  "ArrayBlockingQueue_add-counted-yield"))]
;                  "ArrayBlockingQueue_add-counted-yield_remove-yield"))]
;                  "ArrayBlockingQueue_offer"))]
;                  "ArrayBlockingQueue_offer-counted-yield"))]
;                  "LinkedTransferQueue_transfer"))]
