### Question:
ASTFunctionCall extends EvaluatedNode { @Override public int hashCode() { return 31 * super.hashCode() + functionName.hashCode(); } ASTFunctionCall(int id, String functionName);  ASTFunctionCall(int id, String functionName, Object... nodes); @Override int getType(); boolean needParenthesis(); String getFunctionName(); @Override boolean equals(Object o); @Override int hashCode(); @Override void appendAsString(Appendable out); @Override void appendAsEJBQL(List<Object> parameterAccumulator, Appendable out, String rootId);  }### Answer:
@Test public void testHashCode() throws Exception { ASTCount count1 = new ASTCount(); ASTCount count2 = new ASTCount(); ASTCount count3 = new ASTCount(new ASTDbPath("y")); ASTSum sum1 = new ASTSum(new ASTDbPath("x")); ASTSum sum2 = new ASTSum(new ASTDbPath("x")); ASTSum sum3 = new ASTSum(null); ASTSum sum4 = new ASTSum(new ASTDbPath("y")); assertEquals(count1.hashCode(), count2.hashCode()); assertEquals(sum1.hashCode(), sum2.hashCode()); assertNotEquals(count1.hashCode(), count3.hashCode()); assertNotEquals(count1.hashCode(), sum1.hashCode()); assertNotEquals(count3.hashCode(), sum4.hashCode()); assertNotEquals(sum1.hashCode(), sum3.hashCode()); assertNotEquals(sum1.hashCode(), sum4.hashCode()); assertNotEquals(sum3.hashCode(), sum4.hashCode()); }