code: public static void copyDirectory(Path sourceDirectory, Path targetDirectory) throws IOException {
      copyDirectory(sourceDirectory, targetDirectory, emptySet());
    }
docs: Copies a directory.
  <p>
  NOTE: This method is not thread-safe.
  <p>
  Most of the implementation is thanks to
  http://stackoverflow.com/questions/17641706/how-to-copy-a-directory-with-its-attributes-permissions-from-one
  -location-to-ano/18691793#18691793
  
  @param sourceDirectory
  the directory to copy from
  @param targetDirectory
  the directory to copy into
  @throws IOException
  if an I/O error occurs