code: public Integer nextID()
      {
          lock.lock();
          try
          {
              if (lastID == Integer.MAX_VALUE)
              {
                  long hours = (System.currentTimeMillis() - startTime) / SECONDS_IN_HOUR;
                  throw new IDSourceExhaustedException("32-bit ID source exhausted after " + hours + " hours.");
              }
              ++lastID;
              return lastID;
          }
          finally
          {
              lock.unlock();
          }
      }
docs: {@inheritDoc}