docs: public void start(long period, TimeUnit unit) {
  		synchronized (this) {
  			if (started) {
  				throw new IllegalStateException("This reporter has already been started");
  			}
  			final long periodInMS = unit.toMillis(period);
  			executor.scheduleAtFixedRate(new Runnable() {
  				@Override
  				public void run() {
  					try {
  						report();
  					} catch (RuntimeException ex) {
  						logger.error("RuntimeException thrown from {}#report. Exception was suppressed.", ScheduledMetrics2Reporter.this.getClass().getSimpleName(), ex);
  					}
  				}
  			}, getOffsetUntilTimestampIsDivisableByPeriod(clock.getTime(), periodInMS), periodInMS, TimeUnit.MILLISECONDS);
  			this.clock = new QuantizedClock(clock, periodInMS);
  			this.started = true;
  		}
  	}