public function prepareDatasetSourceStatement(DataControllerCallContext $callcontext, DatasetMetaData $dataset, array $columnNames = NULL)
 {
     $statement = NULL;
     // preparing list of datasets which we need to work with
     $referencePaths = ReferenceLinkBuilder::selectReferencedColumnNames($columnNames);
     if (isset($referencePaths)) {
         $linkBuilder = new ReferenceLinkBuilder();
         $link = $linkBuilder->prepareReferenceBranches($dataset->name, $referencePaths);
         $statement = $this->assembleConnectedDatasetSourceStatement($callcontext, $link, $columnNames);
     } else {
         $statement = $this->assembleDatasetSourceStatement($callcontext, $dataset, $columnNames);
     }
     return $statement;
 }