public function deserialize(array $data, Directory $directory): Directory
    {
        $this->sipe('uploadDestination', 'setUploadDestination', $data, $directory);

        $this->sipe('display.showSummary', 'setShowSummary', $data, $directory);
        $this->sipe('display.openSummary', 'setOpenSummary', $data, $directory);

        // resource list config
        // todo : big c/c from Claroline\CoreBundle\API\Serializer\Widget\Type\ListWidgetSerializer
        $this->sipe('list.count', 'setCount', $data, $directory);
        $this->sipe('list.actions', 'setActions', $data, $directory);

        // display feature
        $this->sipe('list.display', 'setDisplay', $data, $directory);
        $this->sipe('list.availableDisplays', 'setAvailableDisplays', $data, $directory);

        // sort feature
        $this->sipe('list.sorting', 'setSortBy', $data, $directory);
        $this->sipe('list.availableSort', 'setAvailableSort', $data, $directory);

        // filter feature
        $this->sipe('list.searchMode', 'setSearchMode', $data, $directory);
        $this->sipe('list.filters', 'setFilters', $data, $directory);
        $this->sipe('list.availableFilters', 'setAvailableFilters', $data, $directory);

        // pagination feature
        $this->sipe('list.paginated', 'setPaginated', $data, $directory);
        $this->sipe('list.pageSize', 'setPageSize', $data, $directory);
        $this->sipe('list.availablePageSizes', 'setAvailablePageSizes', $data, $directory);

        // table config
        $this->sipe('list.columns', 'setDisplayedColumns', $data, $directory);
        $this->sipe('list.availableColumns', 'setAvailableColumns', $data, $directory);

        // grid config
        $this->sipe('list.card.display', 'setCard', $data, $directory);

        return $directory;
    }