Let's try to explain this;
Currently, if a value is set but the operator is 'IS NULL' (a la notExists()) this will always return TRUE. We need to account for the fact that a value will be set but also that the operator will be looking for NULL. So the current issue with this is that the switch statement in the Condition::match method doesn't have and 'IS NULL' or default statement. So we we easily add those and fix that.
The next problem is when trying to call exists() to check a value that is not there, it borks out as it never even tries to check that the value isn't there.