/**
  * @param string $identifier
  * @param bool $returnInaccessibleFolderObject
  *
  * @return Folder|InaccessibleFolder
  * @throws \Exception
  * @throws Exception\InsufficientFolderAccessPermissionsException
  */
 public function getFolder($identifier, $returnInaccessibleFolderObject = false)
 {
     $data = $this->driver->getFolderInfoByIdentifier($identifier);
     $folder = ResourceFactory::getInstance()->createFolderObject($this, $data['identifier'], $data['name']);
     try {
         $this->assureFolderReadPermission($folder);
     } catch (Exception\InsufficientFolderAccessPermissionsException $e) {
         $folder = null;
         if ($returnInaccessibleFolderObject) {
             // if parent folder is readable return inaccessible folder object
             $parentPermissions = $this->driver->getPermissions($this->driver->getParentFolderIdentifierOfIdentifier($identifier));
             if ($parentPermissions['r']) {
                 $folder = GeneralUtility::makeInstance(InaccessibleFolder::class, $this, $data['identifier'], $data['name']);
             }
         }
         if ($folder === null) {
             throw $e;
         }
     }
     return $folder;
 }