code: protected synchronized Collection<WriterPoolMember> drainAllWriters() {
          LinkedList<WriterPoolMember> writers = new LinkedList<WriterPoolMember>();
          availableWriters.drainTo(writers);
  
          while (writers.size() < currentActive) {
              try {
                  WriterPoolMember w = availableWriters.take();
                  writers.add(w);
              } catch (InterruptedException e) {
                  logger.severe("caught " + e + " while waiting for writers to free up; returning only "
                          + writers.size() + " of " + currentActive + " active writers");
                  break;
              }
          }
          
          return writers;
      }
docs: Drains all the active writers from {@link #availableWriters}, blocking to
  wait for any writers currently in use to become available.
  
  <p>
  When finished with writers, call availableWriters.addAll(...) to put them
  back into the rotation.
  
  @return all the active writers