class ConditionalExprResolver {
    private static final ResolvedPrimitiveType TYPE_BOOLEAN = ResolvedPrimitiveType.BOOLEAN;

    public static ConditionalExprHandler getConditionExprHandler(ResolvedType thenExpr, ResolvedType elseExpr) {<FILL_FUNCTION_BODY>}
}

        // boolean conditional expressions
        if (!thenExpr.isNull() && !elseExpr.isNull()
                && thenExpr.isAssignableBy(TYPE_BOOLEAN) && elseExpr.isAssignableBy(TYPE_BOOLEAN)) {
            return new BooleanConditionalExprHandler(thenExpr, elseExpr);
            // numeric conditional expressions
        }
        if (thenExpr.isNumericType() && elseExpr.isNumericType()) {
            return new NumericConditionalExprHandler(thenExpr, elseExpr);
        }
        // reference conditional expressions
        return new ReferenceConditionalExprHandler(thenExpr, elseExpr);
    
<no_super_class>