public static Boolean or(Row row, ExpressionEvalContext context, Expression<?>... operands) {
        boolean seenUnknown = false;

        for (Expression<?> operand : operands) {
            Boolean result = (Boolean) operand.eval(row, context);

            if (isTrue(result)) {
                return Boolean.TRUE;
            }

            if (isNull(result)) {
                seenUnknown = true;
            }
        }

        return seenUnknown ? null : Boolean.FALSE;
    }
@SuppressWarnings("SimplifiableJUnitAssertion")
    @Test
    public void testOr() {
        assertEquals(false, TernaryLogic.or(ROW, CONTEXT));

        assertEquals(false, TernaryLogic.or(ROW, CONTEXT, FALSE, FALSE));
        assertEquals(true, TernaryLogic.or(ROW, CONTEXT, FALSE, TRUE));
        assertEquals(true, TernaryLogic.or(ROW, CONTEXT, TRUE, FALSE));
        assertEquals(true, TernaryLogic.or(ROW, CONTEXT, TRUE, TRUE));

        assertEquals(null, TernaryLogic.or(ROW, CONTEXT, NULL, FALSE));
        assertEquals(null, TernaryLogic.or(ROW, CONTEXT, FALSE, NULL));

        assertEquals(true, TernaryLogic.or(ROW, CONTEXT, NULL, TRUE));
        assertEquals(true, TernaryLogic.or(ROW, CONTEXT, TRUE, NULL));

        assertEquals(null, TernaryLogic.or(ROW, CONTEXT, NULL, NULL));
    }