code: private Collection<DispatchKey> createKeys(final Path pFile) {
          final Collection<WatchedDirectory> watchedDirectories = getWatchedDirectories();
          final List<DispatchKey> keys = new ArrayList<>(watchedDirectories.size());
          for (final WatchedDirectory watchedDirectory : watchedDirectories) {
              final Path relativePath = relativizeAgainstRoot(watchedDirectory, pFile);
  
              if (!watchedDirectory.isBlacklisted(relativePath)) {
                  keys.add(getFactory().newKey(watchedDirectory.getKey(), relativePath));
              } else {
                  LOG.info("{} is blacklisted by {}", relativePath, watchedDirectory);
              }
          }
  
          return keys;
      }
docs: <p><em>INTERNAL API, only ot be used in class hierarchy</em></p>
  <p>
  Creates a new collection of {@link DispatchKey} objects. Therefore, the directory-key of every watched-directory
  returned by {@link #getWatchedDirectories()} will be combined with the relative path of the
  file specified. If a watched-directory does blacklist the file specified, no key for that directory will be
  generated. The relative path is the relativization between the root-directory and
  the file specified (see {@link #relativizeAgainstRoot(WatchedDirectory, Path)}).
  
  @param pFile File to relativize against {@link #getPath()}, must not be {@code null}
  @return New collection of {@link DispatchKey} objects, never {@code null}