/**
  * @internal
  * @param FilterInterface $filter
  * @param FilterParam\Searching $globalSearch
  * @return CompositeExpression|null
  */
 private function getExpressionForGlobalSearch(FilterInterface $filter, FilterParam\Searching $globalSearch = null)
 {
     if (null === $globalSearch) {
         return null;
     }
     $searchAllExprs = array();
     foreach ($filter->getColumns() as $col) {
         if (!$col->getSearchable()) {
             continue;
         }
         $field = $col->getName();
         $searchs = $globalSearch->isTokenizable() ? $globalSearch->getTokens() : (array) $globalSearch->getValue();
         $searchColExprs = array();
         foreach ($searchs as $search) {
             $compExpr = $globalSearch->isExactly() ? Criteria::expr()->eq($field, $search) : Criteria::expr()->contains($field, $search);
             $searchColExprs[] = $compExpr;
         }
         $searchAllExprs[] = $this->createCompositeExpression($globalSearch->getTokenSeparator(), $searchColExprs);
     }
     return $this->createCompositeExpression(CompositeExpression::TYPE_OR, $searchAllExprs);
 }