Github user ottobackwards commented on the issue: https://github.com/apache/metron/pull/814 So for example: ```java /* curr is the current value on the stack. This is the non-deferred actual evaluation for this expression and with the current context. */ Token<?> curr = instanceDeque.peek(); if (curr != null && curr.getValue() != null && curr.getValue() instanceof Boolean && ShortCircuitOp.class.isAssignableFrom(token.getUnderlyingType())) { //if we have a boolean as the current value and the next non-contextual token is a short circuit op //then we need to short circuit possibly if (token.getUnderlyingType() == BooleanArg.class) { ``` with this function: ```java @Test @SuppressWarnings("unchecked") public void testVariableOnlyCheckWithDefault() { Assert.assertEquals("a", run("match{ foo : 'a', default : 'b' }", new HashMap() {{ put("foo", true); }})); } ``` When we get to that point, because of the validation of vars to null `curr` IS null. So even though token IS a short circuit token, we do not process it as we should.
---