code: public long stop() throws CouldNotPerformException {
          synchronized (timeSync) {
              if (!isRunning()) {
                  throw new InvalidStateException("Stopwatch was never started!");
              }
  
              synchronized (stopWaiter) {
                  endTime = System.currentTimeMillis();
                  stopWaiter.notifyAll();
              }
  
              return getTime();
          }
      }
docs: This method stops the Stopwatch and returns the time result.
  
  The internal timestamps are not cleared by this method so the result can still queried by the getTime() method afterwards.
  Additionally this method can be called multiply times but only the last stop timestamp will be stored and handled by the getTime() method.
  
  @return the elapsed time interval since start.
  @throws org.openbase.jul.exception.CouldNotPerformException is thrown in case the Stopwatch was never started.