public function prepareQueryRequest(DataQueryControllerDatasetRequest $request) {
        $datasourceRequest = new DatasetQueryRequest($request->datasetName);

        // needs to be called before any additional methods are called
        $datasourceRequest->addOptions($request->options);

        $datasourceRequest->addCompositeQueryValues($request->parameters);
        $datasourceRequest->addColumns($request->columns);
        $datasourceRequest->addOrderByColumns($request->orderBy);
        $datasourceRequest->setPagination($request->limit, $request->startWith);

        return $datasourceRequest;
    }
    protected function selectBoundary4DatasetRequest(DataControllerCallContext $callcontext, AbstractDatasetQueryRequest $request, $datasetName, $columnName) {
        // looking for an index where this instance is used. Rest of the queries will be ignored.
        // Data for ignored queries will be calculated during subsequent requests to different instances of this class
        $selectedIndex = NULL;
        if (isset($request->queries)) {
            foreach ($request->queries as $index => $query) {
                foreach ($query as $values) {
                    foreach ($values as $value) {
                        if ($this->operatorHandler === $value) {
                            $selectedIndex = $index;
                            break 3;
                        }
                    }
                }
            }
        }

        $expressionRequest = new DatasetQueryRequest($request->getDatasetName());
        // needs to be called before any additional methods are called
        $expressionRequest->addOptions($request->options);
        // returning only observing column
        $expressionRequest->addColumn($columnName);
        // excluding records with NULL value for the observing column
        $expressionRequest->addQueryValue(
            0,
            $columnName, OperatorFactory::getInstance()->initiateHandler(NotEqualOperatorHandler::OPERATOR__NAME, NULL));
        // adding support for queries except this operator handler
        if (isset($selectedIndex)) {
            foreach ($request->queries[$selectedIndex] as $name => $values) {
                foreach ($values as $value) {
                    if ($this->shouldValueBeSkipped($value)) {
                        continue;
                    }

                    if ($this->operatorHandler === $value) {
                        continue;
                    }

                    $expressionRequest->addQueryValue(0, $name, $value);
                }
            }
        }
        else {
            // we have this situation because we call this operator for a request where this operator is not used
        }
        // sorting data
        $expressionRequest->addOrderByColumn(
            ColumnBasedComparator_AbstractSortingConfiguration::assembleDirectionalColumnName($columnName, $this->isSortAscending()));
        // limiting response to one record
        $expressionRequest->setPagination(1, 0);

        return $this->processDatasetExpressionRequest($callcontext, $expressionRequest, $columnName);
    }