public static BinaryExpression coalesce(final Expression left, final Expression right, final LambdaExpression<?> conversion) {
verifyCanRead(left, "left");
verifyCanRead(right, "right");
if (conversion == null) {
final Type resultType = validateCoalesceArgumentTypes(left.getType(), right.getType());
return new SimpleBinaryExpression(ExpressionType.Coalesce, left, right, resultType);
}
if (left.getType().isPrimitive()) {
throw Error.coalesceUsedOnNonNullableType();