docs: @Override
     public void setPropertyPath(PropertyPath<TypeDescriptor<TypeMetadata>> propertyPath) {
        if (aggregationFunction != null) {
           if (propertyPath == null && aggregationFunction != AggregationFunction.COUNT && aggregationFunction != AggregationFunction.COUNT_DISTINCT) {
              throw log.getAggregationCanOnlyBeAppliedToPropertyReferencesException(aggregationFunction.name());
           }
           propertyPath = new AggregationPropertyPath<>(aggregationFunction, propertyPath.getNodes());
        }
        if (phase == Phase.SELECT) {
           if (projections == null) {
              projections = new ArrayList<>(ARRAY_INITIAL_LENGTH);
              projectedTypes = new ArrayList<>(ARRAY_INITIAL_LENGTH);
              projectedNullMarkers = new ArrayList<>(ARRAY_INITIAL_LENGTH);
           }
           PropertyPath<TypeDescriptor<TypeMetadata>> projection;
           Class<?> propertyType;
           Object nullMarker;
           if (propertyPath.getLength() == 1 && propertyPath.isAlias()) {
              projection = new PropertyPath<>(Collections.singletonList(new PropertyPath.PropertyReference<>("__HSearch_This", null, true))); //todo [anistor] this is a leftover from hsearch ????   this represents the entity itself. see org.hibernate.search.ProjectionConstants
              propertyType = null;
              nullMarker = null;
           } else {
              projection = resolveAlias(propertyPath);
              propertyType = propertyHelper.getPrimitivePropertyType(targetEntityMetadata, projection.asArrayPath());
              nullMarker = fieldIndexingMetadata.getNullMarker(projection.asArrayPath());
           }
           projections.add(projection);
           projectedTypes.add(propertyType);
           projectedNullMarkers.add(nullMarker);
        } else {
           this.propertyPath = propertyPath;
        }
     }