getType() === ISearchBinaryOperator::OPERATOR_OR || $operator->getType() === ISearchBinaryOperator::OPERATOR_AND ) ) { $newArguments = []; foreach ($operator->getArguments() as $oldArgument) { if ($oldArgument instanceof SearchBinaryOperator && $oldArgument->getType() === $operator->getType()) { $newArguments = array_merge($newArguments, $oldArgument->getArguments()); } else { $newArguments[] = $oldArgument; } } $operator->setArguments($newArguments); } parent::processOperator($operator); } }