List<TupleInfo> tupleInfos = new ArrayList<>();
int projectionIndex = 0;
for (int i = 0; i < projections.size(); i++) {
Type outputType = outputTypes.get(i);
checkArgument(outputType != Type.NULL, "NULL output type is not supported");
tupleInfos.add(new TupleInfo(outputType.getRawType()));
// verify the compiled projection has the correct type
Expression projection = projections.get(i);
Class<?> type = generateProjectMethod(classDefinition, "project_" + projectionIndex, projection, inputTypes, true);