Which of the following statements about the hashCode method is true?

A) The hashCode method has long as its return value.
B) It is required that if two objects are unequal according to the equals(java.lang.Object) method, then calling the hashCode method on each of the two objects must produce distinct integer results.
C) If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result.
D) Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified.
E) This method is supported for the benefit of lists such as those provided by java.util.ArrayList.