IMPORTANT: merges with existing filter items
@param RetrievalFilterItems $oFilterItems
@return $this
495927
public function addFilterItems( RetrievalFilterItems $oFilterItems ) {
		$oExisting = $this->getFilterItems();
		foreach ( $oExisting->getEqualityFilterItems() as $sItemKey => $mItemValue ) {
			$oFilterItems->setEqualityFilterItem( $sItemKey, $mItemValue );
		}
		return $this->setFilterItems( $oFilterItems );
	}
38621
public function filter($callback)
    {
        if (is_callable($callback)) {
            $this->items = $this->items->filter($callback);
        }

        return $this;
    }
713703
public function merge(iterable $items, bool $inPlace = false): self
    {
        $collection = $inPlace ? $this : clone $this;
        foreach ($items as $key => $value) {
            $collection->set($key, $value);
        }

        return $collection;
    }
1188136
public function items($items)
    {
        if ($items instanceof Closure) {
            $items = $items();
        }

        array_map(array($this, 'item'), (array) $items);

        return $this;
    }
599142
public function mergeHolidayLists(array $holidayLists)
    {
        $newList = new HolidayList();
        foreach ($holidayLists as $holidayList) {
            foreach ($holidayList->getList() as $holiday) {
                $newList->add($holiday);
            }
        }

        return (new SortByDateFilter())->filter($newList);
    }
731745
public function clearFilters()
    {
        foreach ($this->filters as $type => $filters) {
            $this->filters[$type] = [];
        }

        return $this;
    }
1041358
public function setFilters(array $filters = [])
    {
        foreach ($filters as $filterName => $filterValue) {
            $this->addFilter($filterName, $filterValue);
        }

        return $this;
    }
360543
public function setFilters($filters = [])
    {
        foreach ($filters as $key => $value) {
            $this->addFilter($key, $value);
        }

        return $this;
    }
1227742
public function addItems(array $items, $where = '')
    {
        foreach (array_keys($items) as $k) {
            if (!is_int($k) && $this->hasItem($k)) {
                unset($items[$k]);
            }
        }
        if (!empty($items)) {
            $this->setItems($items, $where);
        }

        return $this;
    }
1215554
public function setMergedGrantedScopes(array $scopes = null)
    {
        ValidationUtility::ensureNullOrArrayOfString('$scopes', $scopes);

        $this->mergedGrantedScopes = $scopes;

        return $this;
    }
527886
public function applyFilters($filters)
    {
        foreach ($filters as $key => $value) {
            $this->filters[$key] = $value;
        }

        return $this;
    }
345952
protected function ClearOtherCategoryTreeFilter($aURLData, $sListFilterItemId)
    {
        if (is_array($aURLData) && array_key_exists(TdbPkgShopListfilterItem::URL_PARAMETER_FILTER_DATA, $aURLData) && is_array($aURLData[TdbPkgShopListfilterItem::URL_PARAMETER_FILTER_DATA]) && array_key_exists($sListFilterItemId, $aURLData[TdbPkgShopListfilterItem::URL_PARAMETER_FILTER_DATA])
        ) {
            unset($aURLData[TdbPkgShopListfilterItem::URL_PARAMETER_FILTER_DATA][$sListFilterItemId]);
        }

        return $aURLData;
    }
944472
public function addFiltersWithOrToAlias(iterable $filters): self
    {
        $addWith = $this->expr()->orX();
        $this->applyFilters($addWith, $this->getAlias(), $filters);
        $addWith->count() <= 0 ?: $this->andWhere($addWith);

        return $this;
    }
812899
public function merge($arElementIDList)
    {
        if (empty($arElementIDList)) {
            return $this->returnThis();
        }

        if ($this->isClear()) {
            $this->arElementIDList = $arElementIDList;

            return $this->returnThis();
        }

        $this->arElementIDList = array_merge($this->arElementIDList, $arElementIDList);
        $this->arElementIDList = array_unique($this->arElementIDList);

        return $this->returnThis();
    }
938246
public function addFilter($filters)
    {

        $filters = is_array($filters) ? $filters : func_get_args();

        foreach ($filters as $filter) {

            $this->filters[] = $filter;
        }

        return $this;
    }
238285
public function setItems($items)
    {
        if (! is_array($items)) {
            $items = func_get_args();
        }

        $this->addBody($items);

        return $this;
    }
694372
public function resetFilters($extension = null)
    {
        if ($extension === null) {
            $this->filters = [];
        }
        else {
            $this->filters[$extension] = [];
        }

        return $this;
    }