verifyParse("(a) and (b)", HFilter.has("a").and(HFilter.has("b")));
verifyParse("( a ) and ( b ) ", HFilter.has("a").and(HFilter.has("b")));
verifyParse("(a or b) or (c == 3)", HFilter.has("a").or(HFilter.has("b")).or(HFilter.eq("c", n(3))));
// combo
HFilter isA = HFilter.has("a");
HFilter isB = HFilter.has("b");
HFilter isC = HFilter.has("c");
HFilter isD = HFilter.has("d");
verifyParse("a and b or c", (isA.and(isB)).or(isC));
verifyParse("a or b and c", isA.or(isB.and(isC)));
verifyParse("a and b or c and d", (isA.and(isB)).or(isC.and(isD)));
verifyParse("(a and (b or c)) and d", isA.and(isB.or(isC)).and(isD));
verifyParse("(a or (b and c)) or d", isA.or(isB.and(isC)).or(isD));