code: @Override
      public void release(final T t, final boolean prune) {
          if (t == null) {
              throw new IllegalArgumentException("Can not return a null item to the pool");
          }
          if (closed) {
              close(t);
              return;
          }
  
          if (prune) {
              close(t);
          } else {
              available.addLast(t);
          }
  
          releasePermit();
      }
docs: call done when you are done with an object from the pool if there is room and the object is ok will get added
  
  @param t     item to return to the pool
  @param prune true if the item should be closed, false if it should be put back in the pool