                                    (do
                                      (Thread/yield)
                                      (recur))))
+               "remove" `(loop []
+                           (if (not (.isEmpty ~queue))
+                             (.remove ~queue)
+                             (recur)))
                `(.take ~queue))]
     (println expr)
     expr))

                                        (.inc ~dropped-counter)
                                        (Thread/yield)))
               "put-counted" `(if (< (.size ~queue) queue-size)
                                      (do
                                        (.put ~queue ~data)
                                        (.inc ~enqueued-counter))
                                      (.inc ~dropped-counter))
               "put" `(.put ~queue ~data)
               "offer-counted-yield" `(if (< (.size ~queue) queue-size)
                                        (do

                                      (do
                                        (.inc ~dropped-counter)
                                        (Thread/yield)))
               "add-counted" `(if (< (.size ~queue) queue-size)
                                (do
                                  (.add ~queue ~data)
                                  (.inc ~enqueued-counter))
                                (.inc ~dropped-counter))
               "put-counted-yield" `(if (< (.size ~queue) queue-size)
                                      (do
                                        (.put ~queue ~data)
