docs: private <T> Collection<Integer> transformSelect(SelectTransformation<T> select) {
  		StreamTransformation<T> input = select.getInput();
  		Collection<Integer> resultIds = transform(input);
  
  		// the recursive transform might have already transformed this
  		if (alreadyTransformed.containsKey(select)) {
  			return alreadyTransformed.get(select);
  		}
  
  		List<Integer> virtualResultIds = new ArrayList<>();
  
  		for (int inputId : resultIds) {
  			int virtualId = StreamTransformation.getNewNodeId();
  			streamGraph.addVirtualSelectNode(inputId, virtualId, select.getSelectedNames());
  			virtualResultIds.add(virtualId);
  		}
  		return virtualResultIds;
  	}