docs: private boolean expandSelectItem(
  		final SqlNode selectItem,
  		SqlSelect select,
  		RelDataType targetType,
  		List<SqlNode> selectItems,
  		Set<String> aliases,
  		List<Map.Entry<String, RelDataType>> fields,
  		final boolean includeSystemVars) {
  		final SelectScope scope = (SelectScope) getWhereScope(select);
  		if (expandStar(selectItems, aliases, fields, includeSystemVars, scope,
  			selectItem)) {
  			return true;
  		}
  
  		// Expand the select item: fully-qualify columns, and convert
  		// parentheses-free functions such as LOCALTIME into explicit function
  		// calls.
  		SqlNode expanded = expand(selectItem, scope);
  		final String alias =
  			deriveAlias(
  				selectItem,
  				aliases.size());
  
  		// If expansion has altered the natural alias, supply an explicit 'AS'.
  		final SqlValidatorScope selectScope = getSelectScope(select);
  		if (expanded != selectItem) {
  			String newAlias =
  				deriveAlias(
  					expanded,
  					aliases.size());
  			if (!newAlias.equals(alias)) {
  				expanded =
  					SqlStdOperatorTable.AS.createCall(
  						selectItem.getParserPosition(),
  						expanded,
  						new SqlIdentifier(alias, SqlParserPos.ZERO));
  				deriveTypeImpl(selectScope, expanded);
  			}
  		}
  
  		selectItems.add(expanded);
  		aliases.add(alias);
  
  		if (expanded != null) {
  			inferUnknownTypes(targetType, scope, expanded);
  		}
  		final RelDataType type = deriveType(selectScope, expanded);
  		setValidatedNodeType(expanded, type);
  		fields.add(Pair.of(alias, type));
  		return false;
  	}