function validSubAttrCriteria(c) {
    return _.isObject(c) && (
            !_.isUndefined(c.not) || !_.isUndefined(c.greaterThan) || !_.isUndefined(c.lessThan) ||
            !_.isUndefined(c.greaterThanOrEqual) || !_.isUndefined(c.lessThanOrEqual) || !_.isUndefined(c['<']) ||
            !_.isUndefined(c['<=']) || !_.isUndefined(c['!']) || !_.isUndefined(c['>']) || !_.isUndefined(c['>=']) ||
            !_.isUndefined(c.startsWith) || !_.isUndefined(c.endsWith) || !_.isUndefined(c.contains) || !_.isUndefined(c.like));
}
function validSubAttrCriteria(c) {
    return _.isObject(c) && (
            !_.isUndefined(c.not) || !_.isUndefined(c.greaterThan) || !_.isUndefined(c.lessThan) ||
            !_.isUndefined(c.greaterThanOrEqual) || !_.isUndefined(c.lessThanOrEqual) || !_.isUndefined(c['<']) ||
            !_.isUndefined(c['<=']) || !_.isUndefined(c['!']) || !_.isUndefined(c['>']) || !_.isUndefined(c['>=']) ||
            !_.isUndefined(c.startsWith) || !_.isUndefined(c.endsWith) || !_.isUndefined(c.contains) || !_.isUndefined(c.like));
}
function validSubAttrCriteria ( c ) { return _ . isObject ( c ) && ( ! _ . isUndefined ( c . not ) || ! _ . isUndefined ( c . greaterThan ) || ! _ . isUndefined ( c . lessThan ) || ! _ . isUndefined ( c . greaterThanOrEqual ) || ! _ . isUndefined ( c . lessThanOrEqual ) || ! _ . isUndefined ( c [ '<' ] ) || ! _ . isUndefined ( c [ '<=' ] ) || ! _ . isUndefined ( c [ '!' ] ) || ! _ . isUndefined ( c [ '>' ] ) || ! _ . isUndefined ( c [ '>=' ] ) || ! _ . isUndefined ( c . startsWith ) || ! _ . isUndefined ( c . endsWith ) || ! _ . isUndefined ( c . contains ) || ! _ . isUndefined ( c . like ) ) ; }
Return whether this criteria is valid as an object inside of an attribute
Return whether this criteria is valid as an object inside of an attribute