code: long stop(int silenceThreshold) {
      checkState(Thread.currentThread() == startThread);
  
      ThreadTrace trace = getThreadTrace();
      // Do nothing if the thread trace was not initialized.
      if (!trace.isInitialized()) {
        return 0;
      }
  
      stopTimeMs = clock.currentTimeMillis();
      if (extraTracingValues != null) {
        // We use extraTracingValues.length rather than
        // extraTracingStatistics.size() because a new statistic may
        // have been added
        for (int i = 0; i < extraTracingValues.length; i++) {
          long value = extraTracingStatistics.get(i).stop(startThread);
          extraTracingValues[i] = value - extraTracingValues[i];
        }
      }
  
      // Do nothing if the thread trace was not initialized.
      if (!trace.isInitialized()) {
        return 0;
      }
  
      trace.endEvent(this, silenceThreshold);
      return stopTimeMs - startTimeMs;
    }
docs: Stop the trace.
  This may only be done once and must be done from the same thread
  that started it.
  @param silenceThreshold Traces for time less than silence_threshold
  ms will be left out of the trace report. A value of -1 indicates
  that the current ThreadTrace silence_threshold should be used.
  @return The time that this trace actually ran