code: @Override public void start(Set<File> files, Consumer<Set<File>> callback) {
          if (isStarted()) {
              throw new IllegalStateException("start() should not be called more than once");
          }
          Set<File> filesCopy = ImmutableSet.copyOf(files);
          Preconditions.checkArgument(filesCopy.size() > 0, "must specify at least 1 file to watch for changes");
          this.callback = requireNonNull(callback);
          watchedFiles = filesCopy;
          executorService = MoreExecutors.listeningDecorator(Executors.newScheduledThreadPool(1));
          future = executorService.scheduleAtFixedRate(
              this::scanFilesForChanges,
              initialDelay,
              interval,
              timeUnit);
      }
docs: Starts polling the watched files for changes.
  
  @param files a set of one or more files to watch for changes.
  @param callback the callback to call with the set of files that changed since the last time.