// And add Where & and statment
519094
func (statement *Statement) And(query interface{}, args ...interface{}) *Statement {
	switch q := query.(type) {
	case string:
		cond := builder.Expr(q, args...)
		statement.cond = statement.cond.And(cond)
	case builder.Cond:
		statement.cond = statement.cond.And(q)
		for _, v := range args {
			if vv, ok := v.(builder.Cond); ok {
				statement.cond = statement.cond.And(vv)
			}
		}
	default:
		// TODO: not support condition type
	}

	return statement
}
471536
func (gte Gte) And(conds ...Cond) Cond {
	return And(gte, And(conds...))
}
1329691
func (c *ConflictUpdate) Where(expressions ...Expression) *ConflictUpdate {
	if c.WhereClause == nil {
		c.WhereClause = And(expressions...)
	} else {
		c.WhereClause = c.WhereClause.Append(expressions...)
	}
	return c
}
674941
func NewOperand(o ...interface{}) Operand {
	if len(o) == 1 {
		if c, ok := o[0].(I); ok {
			return Operand{Column: c}
		}
	}

	return Operand{Values: o}
}
1090817
func (ba *bitArray) And(other BitArray) BitArray {
	if dba, ok := other.(*bitArray); ok {
		return andDenseWithDenseBitArray(ba, dba)
	}

	return andSparseWithDenseBitArray(other.(*sparseBitArray), ba)
}
195640
func (s *SelectQuery) AndBind(params Params) *SelectQuery {
	if len(s.params) == 0 {
		s.params = params
	} else {
		for k, v := range params {
			s.params[k] = v
		}
	}
	return s
}
35946
func And(bys ...By) By {
	and := make(andCombinator, 0, len(bys))
	for _, by := range bys {
		and = append(and, by)
	}
	return and
}
869362
func (isNull IsNull) And(conds ...Cond) Cond {
	return And(isNull, And(conds...))
}
471981
func (us *unionStatementImpl) AndWhere(expression BoolExpression) UnionStatement {
	if us.where == nil {
		return us.Where(expression)
	}
	us.where = And(us.where, expression)
	return us
}
1364939
func (f *FilterOp) And(filters ...*FilterOp) *FilterOp {
	if len(f.AndFilters) == 0 {
		f.AndFilters = filters[:]
	} else {
		f.AndFilters = append(f.AndFilters, filters...)
	}

	return f
}
82771
func (o Opt) And(other Opt) Opt {
	if o == nil {
		if other == nil {
			return nil
		}
		return other
	}
	if other == nil {
		return o
	}
	return Opts{o, other}.Merged()
}
622067
func (t Term) And(args ...interface{}) Term {
	return constructMethodTerm(t, "And", p.Term_AND, args, map[string]interface{}{})
}
876696
func (b *SelectBuilder) Where(w ...Cmp) *SelectBuilder {
	b.where = append(b.where, w...)
	return b
}
478987
func And(u1 UUID, u2 UUID) UUID {
	u := UUID{}
	for i := 0; i < 16; i++ {
		u[i] = u1[i] & u2[i]
	}
	return u
}
98644
func (ai *AtomicInt) GetAndDecrement() int {
	newVal := atomic.AddInt64(&ai.val, -1)
	res := int(newVal + 1)
	return res
}
848399
func (rf Range) AND(f Range) Range {
	return Range(func(v Version) bool {
		return rf(v) && f(v)
	})
}
824040
func (v *VerbalExpression) And(ve *VerbalExpression) *VerbalExpression {
	return v.add("(?:" + ve.Regex().String() + ")")
}