docs: void start( ScheduledExecutorService service ) {
          if (rollupFuture.get() != null) {
              // already started ...
              return;
          }
  
          // Pre-populate the metrics (overwriting any existing history object) ...
          durations.put(DurationMetric.QUERY_EXECUTION_TIME, new DurationHistory(TimeUnit.MILLISECONDS,
                                                                                 MAXIMUM_LONG_RUNNING_QUERY_COUNT));
          durations.put(DurationMetric.SEQUENCER_EXECUTION_TIME, new DurationHistory(TimeUnit.MILLISECONDS,
                                                                                     MAXIMUM_LONG_RUNNING_SEQUENCING_COUNT));
          durations.put(DurationMetric.SESSION_LIFETIME, new DurationHistory(TimeUnit.MILLISECONDS,
                                                                             MAXIMUM_LONG_RUNNING_SESSION_COUNT));
  
          for (ValueMetric metric : EnumSet.allOf(ValueMetric.class)) {
              boolean resetUponRollup = !metric.isContinuous();
              values.put(metric, new ValueHistory(resetUponRollup));
          }
  
          // Initialize the start times in a threadsafe manner ...
          DateTime now = timeFactory.create();
          this.weeksStartTime.compareAndSet(null, now);
          this.daysStartTime.compareAndSet(null, now);
          this.hoursStartTime.compareAndSet(null, now);
          this.minutesStartTime.compareAndSet(null, now);
          this.secondsStartTime.compareAndSet(null, now);
          rollup();
  
          // Then schedule the rollup to be done at a fixed rate ...
          this.rollupFuture.set(service.scheduleAtFixedRate(new Runnable() {
              @SuppressWarnings( "synthetic-access" )
              @Override
              public void run() {
                  rollup();
              }
          }, CAPTURE_DELAY_IN_SECONDS, CAPTURE_INTERVAL_IN_SECONDS, TimeUnit.SECONDS));
      }