code: public function visit(Criterion $criterion, CriterionVisitor $subVisitor = null)
      {
          /** @var \eZ\Publish\API\Repository\Values\Content\Query\Criterion\LogicalAnd $criterion */
          if (!isset($criterion->criteria[0])) {
              throw new RuntimeException('Invalid aggregation in LogicalAnd criterion.');
          }
  
          $subCriteria = array_map(
              function ($value) use ($subVisitor) {
                  return $subVisitor->visit($value);
              },
              $criterion->criteria
          );
  
          if (count($subCriteria) === 1) {
              return reset($subCriteria);
          }
  
          return '(' . implode(' AND ', $subCriteria) . ')';
      }
docs: Map field value to a proper Solr representation.
  
  @param Criterion $criterion
  @param CriterionVisitor $subVisitor
  
  @return string