code: public static void copyDirectory(final Path source, final Path destination) throws IOException {
      copyDirectory(source, destination, Collections.emptyList());
    }
docs: Implementation of recursive directory copy, does NOT overwrite.
  
  @param source an existing source directory to copy from
  @param destination an existing destination directory to copy to
  @throws IllegalArgumentException if source directory is same destination directory, either
  source or destination is not a directory, or destination is inside source