In this case, there's only one projection, so there are not a lot of advantages. The idea is that you can get different types of data. For instance, some analyses want the raw data, others want standard scores and so on. 

In this case, if you're not using doWithCriteriaBuilder you might as well implement `Projection` directly, and then you only have to implement `doWithResult`. The projection is not used directly by the framework in this case, but you still need to have a `doWithResult`, so you might as well use it. You can leave this method as is and change line 139 on `transformResults` to call this instead of instantiating `VcfValuesImpl` directly.