docs: private <R,T> Predicate createPredicateFromIntersectingCriteriaList(CriteriaQuery<R> query, CriteriaBuilder builder, Class<T> queryType, List<QueryCriteria> intersectingCriteriaList, QueryWhere queryWhere  ) {
          combineIntersectingRangeCriteria(intersectingCriteriaList);
          assert intersectingCriteriaList.size() > 0 : "Empty list of currently intersecting criteria!";
          Predicate [] intersectingPredicates = new Predicate[intersectingCriteriaList.size()];
          int i = 0;
          for( QueryCriteria intersectingCriteria : intersectingCriteriaList ) {
              Predicate predicate = createPredicateFromSingleOrGroupCriteria(query, builder, queryType, intersectingCriteria, queryWhere );
              assert predicate != null : "Null predicate when evaluating individual intersecting criteria [" + intersectingCriteria.toString() + "]";
              intersectingPredicates[i++] = predicate;
          }
  
          Predicate predicate;
          if( intersectingPredicates.length > 1 ) {
              predicate = builder.and(intersectingPredicates);
          } else {
             predicate = intersectingPredicates[0];
          }
  
          return predicate;
      }