public static <RT> Expression<RT> convert(Expression<RT> expr) {
        if (expr instanceof FactoryExpression) {
            FactoryExpression<RT> factoryExpr = (FactoryExpression<RT>) expr;
            for (Expression<?> e: factoryExpr.getArgs()) {
                if (needsConstantRemoval(e)) {
                    return convert(new ConstantHidingExpression<RT>(factoryExpr));
                }
            }
            for (Expression<?> e : factoryExpr.getArgs()) {
                if (needsNumberConversion(e)) {
                    return new NumberConversions<RT>(factoryExpr);
                }
            }
        } else if (needsNumberConversion(expr)) {
            return new NumberConversion<RT>(expr);
        }
        return expr;
    }
{@code Conversions} provides module specific projection conversion functionality

@author tiwe
querydsl-jpa/src/main/java/com/querydsl/jpa/Conversions.java