func lte(lhs Expression, rhs interface{}) BooleanExpression {
	return NewBooleanExpression(LteOp, lhs, rhs)
}
used internally to create an lte comparison BooleanExpression
package exp
import (
	"reflect"
	"regexp"
)
type boolean struct {
	lhs Expression
	rhs interface{}
	op  BooleanOperation
}
func NewBooleanExpression(op BooleanOperation, lhs Expression, rhs interface{}) BooleanExpression {
	return boolean{op: op, lhs: lhs, rhs: rhs}
}
func (b boolean) Clone() Expression {
	return NewBooleanExpression(b.op, b.lhs.Clone(), b.rhs)
}
func (b boolean) Expression() Expression {
	return b
}
func (b boolean) RHS() interface{} {
	return b.rhs
}
func (b boolean) LHS() Expression {
	return b.lhs
}
func (b boolean) Op() BooleanOperation {
	return b.op
}
func (b boolean) As(val interface{}) AliasedExpression {
	return NewAliasExpression(b, val)
}
func eq(lhs Expression, rhs interface{}) BooleanExpression {
	return checkBoolExpType(EqOp, lhs, rhs, false)
}
func neq(lhs Expression, rhs interface{}) BooleanExpression {
	return checkBoolExpType(EqOp, lhs, rhs, true)
}
func gt(lhs Expression, rhs interface{}) BooleanExpression {
	return NewBooleanExpression(GtOp, lhs, rhs)
}
func gte(lhs Expression, rhs interface{}) BooleanExpression {
	return NewBooleanExpression(GteOp, lhs, rhs)
}
func lt(lhs Expression, rhs interface{}) BooleanExpression {
	return NewBooleanExpression(LtOp, lhs, rhs)
}