code: void returnWorkPermit()
      {
          while (true)
          {
              long current = permits.get();
              int workPermits = workPermits(current);
              if (permits.compareAndSet(current, updateWorkPermits(current, workPermits + 1)))
                  return;
          }
      }
docs: gives up a work permit