public final class MultiWriteDrainableLinkedList<T>
A custom structure similar to a concurrent linked list.
This could be functionally replaced by a LinkedBlockingDeque, but we only
need a specific subset of its functionality.
Specifically, we need to maintain the order of elements being added, but on
a drain we'll only ever need to iterate the list sequentially, and the
drain needs to atomically reset the queue.