protected function detectDirectoryDescendants()
    {
        $descendants = [];

        foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->getPath())) as $file) {
            if ($file->isDir() && ! in_array($file->getBasename(), array('.', '..'))) {
                $resource = new DirectoryResource($file, $this->files);

                $descendants[$resource->getKey()] = $resource;
            } elseif ($file->isFile()) {
                $resource = new FileResource($file, $this->files);

                $descendants[$resource->getKey()] = $resource;
            }
        }

        return $descendants;
    }