we probably still have an issue with operator precedence for the NOT case.
how does the query builder distinguish NOT(a OR b) from (NOT a) OR b? afaik NOT a OR b precedence would make it (NOT a) or b.
see discussion in https://github.com/phpcr/phpcr-api-tests/pull/140/files#r20051310
/cc @dantleech