@Test public void testHashCode() { Expression expression = new Expression("hello", "there"); assertEquals("hello".hashCode() + "there".hashCode(), expression.hashCode()); }
@Override public int hashCode() { return nullSafeHashCode(expression) + nullSafeHashCode(language); }
Expression { @Override public int hashCode() { return nullSafeHashCode(expression) + nullSafeHashCode(language); } }
Expression { @Override public int hashCode() { return nullSafeHashCode(expression) + nullSafeHashCode(language); } Expression(String expression, String language);  Expression(String expression);  Expression(Expression toCopy); }
Expression { @Override public int hashCode() { return nullSafeHashCode(expression) + nullSafeHashCode(language); } Expression(String expression, String language);  Expression(String expression);  Expression(Expression toCopy); static Expression createExpressionFromDescribedExpression(String describedExpression); static Expression createExpression(String expression, String language); String getExpression(); String getLanguage(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); }
Expression { @Override public int hashCode() { return nullSafeHashCode(expression) + nullSafeHashCode(language); } Expression(String expression, String language);  Expression(String expression);  Expression(Expression toCopy); static Expression createExpressionFromDescribedExpression(String describedExpression); static Expression createExpression(String expression, String language); String getExpression(); String getLanguage(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }