 
 
 (defn create-local-processing-element
-  ([^BlockingQueue in-queue initial-proc-fn]
+  ([in-queue initial-proc-fn]
     (create-local-processing-element in-queue initial-proc-fn nil))
-  ([^BlockingQueue in-queue initial-proc-fn id]
+  ([in-queue initial-proc-fn id]
     (let [running (atom true)
           out-queue (create-queue)
           out-counter (Counter.)

    expr))

(defmacro take-from-queue
  [queue]
  (println "Retrieving data from queue via:")
  (let [expr (condp (fn [^String v ^String s] (.endsWith s v)) queue-setup
               "remove-yield" `(if (not (.isEmpty ~queue))
                                 (.remove ~queue)
                                 (Thread/yield))

    expr))

(defmacro enqueue
  [obj data enqueued-counter dropped-counter]
  (println "Enqueueing data via:")
  (let [queue (with-meta obj {:tag 'java.util.concurrent.BlockingQueue})
        expr (condp (fn [^String v ^String s] (.contains s v)) queue-setup
               "add-counted-yield" `(if (< (.size ~queue) queue-size)
                                      (do
                                        (.add ~queue ~data)
