public final SQLSerializer handleSelect(final String sep, final List<? extends Expression<?>> expressions) {
        if (inSubquery) {
            Set<String> names = new HashSet<>();
            List<Expression<?>> replacements = new ArrayList<>();
            for (Expression<?> expr : expressions) {
                if (expr instanceof Path) {
                    String name = ColumnMetadata.getName((Path<?>) expr);
                    if (!names.add(name.toLowerCase())) {
                        expr = ExpressionUtils.as(expr, "col__" + name + replacements.size());
                    }
                }
                replacements.add(expr);
            }
            return handle(sep, replacements);
        } else {
            return handle(sep, expressions);
        }
    }
Return a list of expressions that can be used to uniquely define the query sources

@param joins
@return identifier columns
querydsl-sql/src/main/java/com/querydsl/sql/SQLSerializer.java