There are two checks in here, neither of which require the rhsExpr to be a LiteralExpression. The first one, the isCoercibleTo check determines whether or not the lhs can be coerced to the rhs. The second adds the bind metadata so that clients can do a preparedStmt.getParameterMetaData() to get the types of the bind parameters.