docs: public static List<Expression> createAliasList(List<Expression> aliases, TableOperation child) {
  		TableSchema childSchema = child.getTableSchema();
  
  		if (aliases.size() > childSchema.getFieldCount()) {
  			throw new ValidationException("Aliasing more fields than we actually have.");
  		}
  
  		List<ValueLiteralExpression> fieldAliases = aliases.stream()
  			.map(f -> f.accept(aliasLiteralValidator))
  			.collect(Collectors.toList());
  
  		String[] childNames = childSchema.getFieldNames();
  		return IntStream.range(0, childNames.length)
  			.mapToObj(idx -> {
  				UnresolvedReferenceExpression oldField = new UnresolvedReferenceExpression(childNames[idx]);
  				if (idx < fieldAliases.size()) {
  					ValueLiteralExpression alias = fieldAliases.get(idx);
  					return new CallExpression(BuiltInFunctionDefinitions.AS, Arrays.asList(oldField, alias));
  				} else {
  					return oldField;
  				}
  			}).collect(Collectors.toList());
  	}