docs: public boolean decrementIfEnoughCredits(final Message msg, int credits, long timeout) {
          lock.lock();
          try {
              if(queuing)
                  return addToQueue(msg, credits);
              if(decrement(credits))
                  return true; // enough credits, message will be sent
              queuing=true;    // not enough credits, start queuing
              return addToQueue(msg, credits);
          }
          finally {
              lock.unlock();
          }
      }