code: public void copyTo(final File destinationFolder) throws IOException {
      if (!destinationFolder.exists() && !destinationFolder.mkdirs()) {
        LOG.log(Level.WARNING, "Failed to create [{0}]", destinationFolder.getAbsolutePath());
      }
      final File reefFolder = new File(destinationFolder, fileNames.getREEFFolderName());
  
      final File localFolder = new File(reefFolder, fileNames.getLocalFolderName());
      final File globalFolder = new File(reefFolder, fileNames.getGlobalFolderName());
      if (!localFolder.exists() && !localFolder.mkdirs()) {
        LOG.log(Level.WARNING, "Failed to create [{0}]", localFolder.getAbsolutePath());
      }
      if (!globalFolder.exists() && !globalFolder.mkdirs()) {
        LOG.log(Level.WARNING, "Failed to create [{0}]", globalFolder.getAbsolutePath());
      }
  
      try {
        this.localFiles.createSymbolicLinkTo(localFolder);
        this.localLibs.createSymbolicLinkTo(localFolder);
        this.globalLibs.createSymbolicLinkTo(globalFolder);
        this.globalFiles.createSymbolicLinkTo(globalFolder);
      } catch (final IOException e) {
        LOG.log(Level.FINE, "Can't symlink the files, copying them instead.", e);
        this.localFiles.copyTo(localFolder);
        this.localLibs.copyTo(localFolder);
        this.globalLibs.copyTo(globalFolder);
        this.globalFiles.copyTo(globalFolder);
      }
    }
docs: Copies this set of files to the destination folder given.
  <p>
  Will attempt to create symbolic links for the files to the destination
  folder.  If the filesystem does not support symbolic links or the user
  does not have appropriate permissions, the entire file will be copied instead.
  
  @param destinationFolder the folder the files shall be copied to.
  @throws IOException if one or more of the copies fail.