protected function _inspectUnaryExpression(UnaryExpression $expression, $bundle, Query $query)
    {
        $class = new \ReflectionClass($expression);
        $property = $class->getProperty('_value');
        $property->setAccessible(true);
        $value = $property->getValue($expression);

        if ($value instanceof IdentifierExpression) {
            $field = $value->getIdentifier();
            $column = is_string($field) ? $this->_toolbox->columnName($field) : '';

            if (empty($column) ||
                in_array($column, (array)$this->_table->schema()->columns()) || // ignore real columns
                !in_array($column, $this->_toolbox->getAttributeNames($bundle)) ||
                !$this->_toolbox->isSearchable($column) // ignore no searchable virtual columns
            ) {
                // nothing to alter
                return $expression;
            }

            $pk = $this->_tablePrimaryKey();
            $driverClass = $this->_toolbox->driver($query);

            switch ($driverClass) {
                case 'sqlite':
                    $concat = implode(' || ', $pk);
                    $field = "({$concat} || '')";
                    break;
                case 'mysql':
                case 'postgres':
                case 'sqlserver':
                default:
                    $concat = implode(', ', $pk);
                    $field = "CONCAT({$concat}, '')";
                    break;
            }

            $attr = $this->_toolbox->attributes($bundle)[$column];
            $type = $this->_toolbox->getType($column);
            $subQuery = TableRegistry::get('Eav.EavValues')
                ->find()
                ->select("EavValues.value_{$type}")
                ->where([
                    'EavValues.entity_id' => $field,
                    'EavValues.eav_attribute_id' => $attr['id']
                ])
                ->order(['EavValues.id' => 'DESC'])
                ->limit(1)
                ->sql();
            $subQuery = str_replace([':c0', ':c1'], [$field, $attr['id']], $subQuery);
            $property->setValue($expression, "({$subQuery})");
        }

        return $expression;
    }