Buggy code:
public class Dfp implements FieldElement < Dfp > { public static final int RADIX = 10000 ; public static final int MIN_EXP = - 32767 ; public static final int MAX_EXP = 32768 ; public static final int ERR_SCALE = 32760 ; public static final byte FINITE = 0 ; public static final byte INFINITE = 1 ; public static final byte SNAN = 2 ; public static final byte QNAN = 3 ; private static final String NAN_STRING = "NaN" ; private static final String POS_INFINITY_STRING = "Infinity" ; private static final String NEG_INFINITY_STRING = "-Infinity" ; private static final String ADD_TRAP = "add" ; private static final String MULTIPLY_TRAP = "multiply" ; private static final String DIVIDE_TRAP = "divide" ; private static final String SQRT_TRAP = "sqrt" ; private static final String ALIGN_TRAP = "align" ; private static final String TRUNC_TRAP = "trunc" ; private static final String NEXT_AFTER_TRAP = "nextAfter" ; private static final String LESS_THAN_TRAP = "lessThan" ; private static final String GREATER_THAN_TRAP = "greaterThan" ; private static final String NEW_INSTANCE_TRAP = "newInstance" ; protected int [ ] mant ; protected byte sign ; protected int exp ; protected byte nans ; private final DfpField field ; protected Dfp ( final DfpField field ) { } protected Dfp ( final DfpField field , byte x ) { } protected Dfp ( final DfpField field , int x ) { } protected Dfp ( final DfpField field , long x ) { } protected Dfp ( final DfpField field , double x ) { } public Dfp ( final Dfp d ) { } protected Dfp ( final DfpField field , final String s ) { } protected Dfp ( final DfpField field , final byte sign , final byte nans ) { } public Dfp newInstance ( ) { } public Dfp newInstance ( final byte x ) { } public Dfp newInstance ( final int x ) { } public Dfp newInstance ( final long x ) { } public Dfp newInstance ( final double x ) { } public Dfp newInstance ( final Dfp d ) { } public Dfp newInstance ( final String s ) { } public Dfp newInstance ( final byte sig , final byte code ) { } public DfpField getField ( ) { } public int getRadixDigits ( ) { } public Dfp getZero ( ) { } public Dfp getOne ( ) { } public Dfp getTwo ( ) { } protected void shiftLeft ( ) { } protected void shiftRight ( ) { } protected int align ( int e ) { } public boolean lessThan ( final Dfp x ) { } public boolean greaterThan ( final Dfp x ) { } public boolean isInfinite ( ) { } public boolean isNaN ( ) { } @ Override public boolean equals ( final Object other ) { } @ Override public int hashCode ( ) { <START_BUG> return ( ( ( 17 + ( ( sign ) << 8 ) ) + ( ( nans ) << 16 ) ) + ( exp ) ) + ( mant . hashCode ( ) ) ; <END_BUG> } public boolean unequal ( final Dfp x ) { } private static int compare ( final Dfp a , final Dfp b ) { } public Dfp rint ( ) { } public Dfp floor ( ) { } public Dfp ceil ( ) { } public Dfp remainder ( final Dfp d ) { } protected Dfp trunc ( final DfpField . RoundingMode rmode ) { } public int intValue ( ) { } public int log10K ( ) { } public Dfp power10K ( final int e ) { } public int log10 ( ) { } public Dfp power10 ( final int e ) { } protected int complement ( int extra ) { } public Dfp add ( final Dfp x ) { } public Dfp negate ( ) { } public Dfp subtract ( final Dfp x ) { } protected int round ( int n ) { } public Dfp multiply ( final Dfp x ) { } public Dfp multiply ( final int x ) { } public Dfp divide ( Dfp divisor ) { } public Dfp divide ( int divisor ) { } public Dfp sqrt ( ) { } public String toString ( ) { } protected String dfp2sci ( ) { } protected String dfp2string ( ) { } public Dfp dotrap ( int type , String what , Dfp oper , Dfp result ) { } protected Dfp trap ( int type , String what , Dfp oper , Dfp def , Dfp result ) { } public int classify ( ) { } public static Dfp copysign ( final Dfp x , final Dfp y ) { } public Dfp nextAfter ( final Dfp x ) { } public double toDouble ( ) { } public double [ ] toSplitDouble ( ) { } }

Fix:
return ( ( ( 17 + ( ( sign ) << 8 ) ) + ( ( nans ) << 16 ) ) + ( exp ) ) + ( Arrays . hashCode ( mant ) ) ;