When working on pg_lion (https://github.com/cgkanchi/pg_lion), I stumbled upon a bug where GIN returns fewer rows when multiple ! operators are specified. I was able to repro this on all versions from 16 to trunk.
Repro:
```
postgres=# CREATE TABLE t (j jsonb); INSERT INTO t VALUES ('{"a": 1, "b": 10}'), ('{"a": 2, "b": 10}'), ('{"a": 2, "b": 20}'); CREATE TABLE INSERT 0 3 postgres=# SELECT j FROM t WHERE j @@ '!(!($.a == 1) && $.b == 20)'; j ------------------- {"a": 1, "b": 10} {"a": 2, "b": 10} (2 rows)
postgres=# create index on t using gin(j); CREATE INDEX postgres=# SELECT j FROM t WHERE j @@ '!(!($.a == 1) && $.b == 20)'; j ------------------- {"a": 1, "b": 10} (1 row)