code: public void requite(final T bagEntry)
     {
        bagEntry.setState(STATE_NOT_IN_USE);
  
        for (int i = 0; waiters.get() > 0; i++) {
           if (bagEntry.getState() != STATE_NOT_IN_USE || handoffQueue.offer(bagEntry)) {
              return;
           }
           else if ((i & 0xff) == 0xff) {
              parkNanos(MICROSECONDS.toNanos(10));
           }
           else {
              yield();
           }
        }
  
        final List<Object> threadLocalList = threadList.get();
        if (threadLocalList.size() < 50) {
           threadLocalList.add(weakThreadLocals ? new WeakReference<>(bagEntry) : bagEntry);
        }
     }
docs: This method will return a borrowed object to the bag.  Objects
  that are borrowed from the bag but never "requited" will result
  in a memory leak.
  
  @param bagEntry the value to return to the bag
  @throws NullPointerException if value is null
  @throws IllegalStateException if the bagEntry was not borrowed from the bag