ExprNullValue extends AbstractExprValue { @Override public int compare(ExprValue other) { throw new IllegalStateException( String.format("[BUG] Unreachable, Comparing with NULL is undefined")); } private  ExprNullValue(); @Override int hashCode(); @Override String toString(); static ExprNullValue of(); @Override Object value(); @Override ExprType type(); @Override boolean isNull(); @Override int compare(ExprValue other); @Override boolean equal(ExprValue other);  }
@Test public void comparabilityTest() { ExpressionEvaluationException exception = assertThrows(ExpressionEvaluationException.class, () -> compare(LITERAL_NULL, LITERAL_NULL)); assertEquals("invalid to call compare operation on null value", exception.getMessage()); }