/**
  * End an event which was previously started. Once ended, log how much time the event took. It is
  * illegal to end an Event that was not started. It is good practice to endEvent in a finally
  * block. See Also startEvent.
  *
  * @param eventName - The name of the event to start
  */
 @Override
 public void endEvent(String eventName) {
   TimingInfo event = eventsBeingProfiled.get(eventName);
   /* Somebody tried to end an event that was not started. */
   if (event == null) {
     LogFactory.getLog(getClass())
         .warn("Trying to end an event which was never started: " + eventName);
     return;
   }
   event.endTiming();
   this.timingInfo.addSubMeasurement(
       eventName,
       TimingInfo.unmodifiableTimingInfo(event.getStartTimeNano(), event.getEndTimeNano()));
 }
 /**
  * Start an event which will be timed. The startTime and endTime are added to timingInfo only
  * after endEvent is called. For every startEvent there should be a corresponding endEvent. If you
  * start the same event without ending it, this will overwrite the old event. i.e. There is no
  * support for recursive events yet. Having said that, if you start and end an event in that
  * sequence multiple times, all events are logged in timingInfo in that order.
  *
  * <p>This feature is enabled if the system property
  * "apphub.dep.amazonaws.sdk.enableRuntimeProfiling" is set, or if a {@link
  * RequestMetricCollector} is in use either at the request, web service client, or AWS SDK level.
  *
  * @param eventName - The name of the event to start
  * @see AwsSdkMetrics
  */
 @Override
 public void startEvent(String eventName) {
   /* This will overwrite past events */
   eventsBeingProfiled.put // ignoring the wall clock time
       (eventName, TimingInfo.startTimingFullSupport(System.nanoTime()));
 }
 /**
  * This constructor should be used in the case when AWS SDK metrics collector is enabled.
  *
  * @see AWSRequestMetricsFullSupport
  */
 public AWSRequestMetricsFullSupport() {
   super(TimingInfo.startTimingFullSupport());
 }