static ProjectedTuple castNumbers(ProjectedTuple tuple) {
    List<Object> newVaues = new ArrayList<>();
    for (int i = 0; i < tuple.values().size(); i++) {
      newVaues.add(convert(tuple.values().get(i), tuple.paths().get(i).returnType()));
    }

    return ProjectedTuple.of(tuple.paths(), newVaues);
  }
Used to convert between types. Sometimes geode backend returns different types for aggregate functions like AVG / MIN / MAX.
Eg. Long vs Integer
criteria/geode/src/org/immutables/criteria/geode/Geodes.java