private void scheduleIfNotRunning() {
    long autoReparseDelayNanos = TimeUnit.MILLISECONDS.toNanos(mySettings.getAutoReparseDelay());
    myScheduledUpdateTimestamp = System.nanoTime() + autoReparseDelayNanos;
    // optimisation: this check is to avoid too many re-schedules in case of thousands of event spikes
    boolean isDone = myUpdateRunnableFuture.isDone();
    if (isDone) {
      scheduleUpdateRunnable(autoReparseDelayNanos);
    }
  }
private void scheduleIfNotRunning()