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.
---