code: private TimerTask getTimerTask() {
      final TimeBasedReportingMetric<T> lockObject = this;
      final TimerTask recurringReporting = new TimerTask() {
        @Override
        public void run() {
          synchronized (lockObject) {
            preTrackingEventMethod();
            notifyManager();
            postTrackingEventMethod();
          }
        }
      };
      return recurringReporting;
    }
docs: Get a TimerTask to reschedule Timer
  
  @return An anonymous TimerTask class