Buggy code:
public class HashCodeBuilderTest { static class ReflectionTestCycleA { HashCodeBuilderTest . ReflectionTestCycleB b ; @ Override public int hashCode ( ) { return HashCodeBuilder . reflectionHashCode ( this ) ; } } static class ReflectionTestCycleB { HashCodeBuilderTest . ReflectionTestCycleA a ; @ Override public int hashCode ( ) { return HashCodeBuilder . reflectionHashCode ( this ) ; } } @ Test ( expected = IllegalArgumentException . class ) public void testConstructorEx1 ( ) { } @ Test ( expected = IllegalArgumentException . class ) public void testConstructorEx2 ( ) { } static class TestObject { private int a ; public TestObject ( int a ) { } @ Override public boolean equals ( Object o ) { } @ Override public int hashCode ( ) { return a ; } public void setA ( int a ) { } public int getA ( ) { } } static class TestSubObject extends HashCodeBuilderTest . TestObject { private int b ; @ SuppressWarnings ( "unused" ) private transient int t ; public TestSubObject ( ) { } public TestSubObject ( int a , int b , int t ) { } @ Override public boolean equals ( Object o ) { } @ Override public int hashCode ( ) { <START_BUG> return ( ( b ) * 17 ) + ( t ) ; <END_BUG> } } @ Test public void testReflectionHashCode ( ) { } @ Test public void testReflectionHierarchyHashCode ( ) { } @ Test ( expected = IllegalArgumentException . class ) public void testReflectionHierarchyHashCodeEx1 ( ) { } @ Test ( expected = IllegalArgumentException . class ) public void testReflectionHierarchyHashCodeEx2 ( ) { } @ Test ( expected = IllegalArgumentException . class ) public void testReflectionHashCodeEx1 ( ) { } @ Test ( expected = IllegalArgumentException . class ) public void testReflectionHashCodeEx2 ( ) { } @ Test ( expected = IllegalArgumentException . class ) public void testReflectionHashCodeEx3 ( ) { } @ Test public void testSuper ( ) { } @ Test public void testObject ( ) { } @ Test public void testObjectBuild ( ) { } @ Test @ SuppressWarnings ( "cast" ) public void testLong ( ) { } @ Test @ SuppressWarnings ( "cast" ) public void testInt ( ) { } @ Test public void testShort ( ) { } @ Test public void testChar ( ) { } @ Test public void testByte ( ) { } @ Test @ SuppressWarnings ( "cast" ) public void testDouble ( ) { } @ Test @ SuppressWarnings ( "cast" ) public void testFloat ( ) { } @ Test public void testBoolean ( ) { } @ Test public void testObjectArray ( ) { } @ Test public void testObjectArrayAsObject ( ) { } @ Test public void testLongArray ( ) { } @ Test public void testLongArrayAsObject ( ) { } @ Test public void testIntArray ( ) { } @ Test public void testIntArrayAsObject ( ) { } @ Test public void testShortArray ( ) { } @ Test public void testShortArrayAsObject ( ) { } @ Test public void testCharArray ( ) { } @ Test public void testCharArrayAsObject ( ) { } @ Test public void testByteArray ( ) { } @ Test public void testByteArrayAsObject ( ) { } @ Test public void testDoubleArray ( ) { } @ Test public void testDoubleArrayAsObject ( ) { } @ Test public void testFloatArray ( ) { } @ Test public void testFloatArrayAsObject ( ) { } @ Test public void testBooleanArray ( ) { } @ Test public void testBooleanArrayAsObject ( ) { } @ Test public void testBooleanMultiArray ( ) { } @ Test public void testReflectionHashCodeExcludeFields ( ) throws Exception { } static class TestObjectWithMultipleFields { @ SuppressWarnings ( "unused" ) private int one = 0 ; @ SuppressWarnings ( "unused" ) private int two = 0 ; @ SuppressWarnings ( "unused" ) private int three = 0 ; public TestObjectWithMultipleFields ( int one , int two , int three ) { } } @ Test public void testReflectionObjectCycle ( ) { } @ Test public void testToHashCodeEqualsHashCode ( ) { } }

Fix:
return ( ( b ) * 17 ) + ( super . hashCode ( ) ) ;