protected function rewriteQueryFilterParameters(Filter $filter, QueryInterface $query, $field, $column)
    {
        $originalExpression = $filter->getExpressionObject();

        $reflected = new ReflectionProperty(CompositeExpression::class, 'parts');
        $reflected->setAccessible(true);

        $reflected2 = new ReflectionProperty(CompositeExpression::class, 'type');
        $reflected2->setAccessible(true);

        $originalParts = $reflected->getValue($originalExpression);
        foreach ($originalParts as &$part) {
            /** @var \Bolt\Storage\Query\SelectQuery $query */
            $part = str_replace('_' . $query->getContenttype() . '.' . $field, $field . '.' . $column, $part);
        }
        $reflected->setValue($originalExpression, $originalParts);

        if ($originalExpression->getType() === 'AND' && count($originalParts) > 1) {
            $platform = $query->getQueryBuilder()->getConnection()->getDatabasePlatform();
            $reflected2->setValue($originalExpression, 'OR');
            $reflected->setValue($originalExpression, [1]);
            foreach ($query->getWhereParametersFor($field) as $paramKey => $paramValue) {
                $query->getQueryBuilder()->andHaving($platform->getConcatExpression("','", '_' . $field . '_' . str_replace('_', '', $column), "','") . ' LIKE(' . ':_having_' . $paramKey . ')');
                $query->getQueryBuilder()->setParameter('_having_' . $paramKey, "%,$paramValue,%");
            }
        }

        $filter->setExpression($originalExpression);
    }