code: private synchronized void doAddRoot(final WatchedDirectory pWatchedDirectory) {
          final Object key = requireNonNull(pWatchedDirectory.getKey(), KEY_IS_NULL);
          final Path directory = requireNonNull(pWatchedDirectory.getDirectory(), DIRECTORY_IS_NULL);
  
          if (!isDirectory(directory)) {
              throw new IllegalArgumentException(format("[%s]: %s is not a directory!", key, directory));
          }
  
          // Insure that the directory-key is unique
          if (watchedDirectories.containsKey(key)) {
              throw new IllegalArgumentException(format("Key %s already used by %s", key, watchedDirectories.get(key)));
          }
          watchedDirectories.put(key, pWatchedDirectory);
  
          try {
              children.computeIfAbsent(directory.getFileSystem(),
                      this::newDedicatedFileSystem).registerRootDirectory(pWatchedDirectory);
              pWatchedDirectory.addObserver(this);
              LOG.info("Added [{}:{}]", key, directory);
          } catch (final IOException | UncheckedIOException e) {
              LOG.warn(e.getMessage(), e);
          }
      }
docs: registered before another WatchedDirectory is being registered.