/**
  * Copy folder
  *
  * @param \TYPO3\CMS\Core\Resource\Folder $folderToCopy The folder to copy
  * @param \TYPO3\CMS\Core\Resource\Folder $targetParentFolder The target folder
  * @param string $newFolderName
  * @param string $conflictMode  "overrideExistingFolder", "renameNewFolder", "cancel
  * @return \TYPO3\CMS\Core\Resource\Folder The new (copied) folder object
  */
 public function copyFolder(\TYPO3\CMS\Core\Resource\Folder $folderToCopy, \TYPO3\CMS\Core\Resource\Folder $targetParentFolder, $newFolderName = NULL, $conflictMode = 'renameNewFolder')
 {
     // TODO implement the $conflictMode handling
     // TODO permission checks
     $returnObject = NULL;
     $newFolderName = $newFolderName ? $newFolderName : $folderToCopy->getName();
     $this->emitPreFolderCopySignal($folderToCopy, $targetParentFolder, $newFolderName);
     $sourceStorage = $folderToCopy->getStorage();
     // call driver method to move the file
     // that also updates the file object properties
     try {
         if ($sourceStorage == $this) {
             $this->driver->copyFolderWithinStorage($folderToCopy, $targetParentFolder, $newFolderName);
             $returnObject = $this->getFolder($targetParentFolder->getSubfolder($newFolderName)->getIdentifier());
         } else {
             $this->copyFolderBetweenStorages($folderToCopy, $targetParentFolder, $newFolderName);
         }
     } catch (\TYPO3\CMS\Core\Exception $e) {
         echo $e->getMessage();
     }
     $this->emitPostFolderCopySignal($folderToCopy, $targetParentFolder, $newFolderName);
     return $returnObject;
 }