code: private synchronized long getTimeSynchronized()
              throws OverClockedException {
          long current = 0;
          synchronized (ThreadClockImpl.class) {
              current = currentTimeMillis;
          }
          if (current != lastTimeMs) {
              generatedThisInterval = 0;
              lastTimeMs = current;
          }
          if (generatedThisInterval + 1 >= (INTERVALS_PER_MILLI * sysInterval)) {
              throw new OverClockedException();
          }
          return ((current + GREGORIAN_CHANGE_OFFSET) * INTERVALS_PER_MILLI)
                  + generatedThisInterval++;
        }
docs: Returns the current time as described in the clock resolution and
  timestamp sections of the uuid specification.
  
  @return the current time in 100-nano second intervals (simulated)
  @throws  OverClockedException an exception when the number of timestamps
  generated exceeds the allowable timestamps for the system time
  interval.