@Override
 public boolean startCollect() {
   for (CollectExpression<?> collectExpression : collectExpressions) {
     collectExpression.startCollect();
   }
   downStreamProjector.startProjection();
   return true;
 }
 @Override
 public boolean processRow() {
   int i = 0;
   if (inputs != null) {
     for (Input<?> input : inputs) {
       result[i++] = input.value();
     }
   }
   downStreamProjector.setNextRow(result);
   return false;
 }