/** INTERNAL: End the operation timing. */
  public void endOperationProfile(String operationName) {
    if (this.profileWeight < SessionProfiler.HEAVY) {
      return;
    }
    long endTime = System.nanoTime();
    Long startTime = getOperationStartTimes().get(operationName);
    if (startTime == null) {
      return;
    }
    long time = endTime - startTime.longValue();

    synchronized (this.operationTimings) {
      Long totalTime = (Long) this.operationTimings.get(operationName);
      if (totalTime == null) {
        this.operationTimings.put(operationName, Long.valueOf(time));
      } else {
        this.operationTimings.put(operationName, Long.valueOf(totalTime.longValue() + time));
      }
    }
  }
 /** INTERNAL: Start the operation timing. */
 public void startOperationProfile(String operationName) {
   getOperationStartTimes().put(operationName, Long.valueOf(System.nanoTime()));
 }