code: void cancelAndRebaseDiscardedDirectory(final Directory pDiscardedParent) {
          pDiscardedParent.cancelKey();
          dirs.remove(pDiscardedParent.getPath());
  
          final List<Directory> toBeConvertedIntoRoot = new LinkedList<>();
          cancelDiscardedDirectories(pDiscardedParent, toBeConvertedIntoRoot);
          toBeConvertedIntoRoot.forEach(d -> {
              final Directory root = d.toRootDirectory();
              rebaseDirectSubDirectories(root);
              dirs.replace(d.getPath(), root);
          });
      }
docs: Cancels the watch-key of the discarded directory specified. Additionally, cancels and removes any sub-directory
  which was not a root itself sometime in the past. Any sub-directory which was a root directory in the past
  will be converted back to a root-directory.
  
  @param pDiscardedParent Discarded directory, never {@code null}