/**
  * Add one query to another.
  *
  * @param SearchQueryInterface $toQuery
  * @param FieldQueryInterface $query
  * @param bool|null $sign
  * @return bool|SearchQueryInterface
  */
 protected static function addQuery(SearchQueryInterface $toQuery, FieldQueryInterface $query, $sign = true)
 {
     if ($toQuery instanceof BooleanQueryInterface) {
         $subQueries = $toQuery->getSubQueries();
         $signs = $toQuery->getSigns();
         foreach ($subQueries as $key => $subQuery) {
             if ($newQuery = self::addQuery($subQuery, $query, $sign)) {
                 $subQueries[$key] = $newQuery;
                 $toQuery->setSubQueries($subQueries, $signs);
                 return $toQuery;
             }
         }
     } elseif ($toQuery instanceof FieldQueryInterface) {
         $equal = $toQuery->equals($query);
         if ($equal === 0) {
             $newQuery = new Boolean();
             $newQuery->setSubQueries([$toQuery, $query], [$sign, $sign]);
             return $newQuery;
         } elseif ($equal === 1) {
             return $toQuery;
         }
     }
     return false;
 }