private function getPositionContextConditions()
    {
        $pattern = $this->pool->getTypeProperty(get_class($this), 'position_context_conditions_pattern', function () {
            $conditions = [];

            foreach ($this->getPositionContext() as $field_name) {
                $conditions[] = $this->connection->escapeFieldName($field_name) . ' = ?';
            }

            return count($conditions) ? implode(' AND ', $conditions) : '';
        });

        if ($pattern) {
            $to_prepare = [$pattern];

            foreach ($this->getPositionContext() as $field_name) {
                $to_prepare[] = $this->getFieldValue($field_name);
            }

            return 'WHERE ' . call_user_func_array([&$this->connection, 'prepare'], $to_prepare);
        }

        return '';
    }