Buggy code:
public class DataValueModelImpl < T > implements DataValueModel < T > { private static final Map < Class , Integer > HEAP_SIZE_MAP = new HashMap < Class , Integer > ( ) ; private static final String VOLATILE_GETTER_PREFIX = "volatile" ; private static final String ORDERED_SETTER_PREFIX = "ordered" ; private final Map < String , DataValueModelImpl . FieldModelImpl > fieldModelMap = new TreeMap < String , DataValueModelImpl . FieldModelImpl > ( ) ; private final Class < T > type ; private final Map < Class , DataValueModel > nestedMap = new HashMap < Class , DataValueModel > ( ) ; public DataValueModelImpl ( Class < T > type ) { } public static int heapSize ( Class primitiveType ) { } private static String getCAS ( String name ) { } private static String getSizeOf ( String name ) { } private static String getAtomicAdder ( String name ) { } private static String getAdder ( String name ) { } private static String getSetter ( String name ) { } private static String getSetterAt ( String name ) { } private static String getGetter ( String name , Class returnType ) { } private static String getUsing ( String name , Method method ) { } private static String getGetterAt ( String name , Class returnType ) { } private static String getBusyLock ( String name ) { } private static String getUnlock ( String name ) { } private static String getTryLockNanos ( String name ) { } private static String getTryLock ( String name ) { } private boolean isOrderedSetter ( String name2 ) { } private boolean isVolatileGetter ( String name2 ) { } private String volatileGetterFieldName ( String name ) { } private String orderedSetterFieldName ( String name ) { } private DataValueModelImpl . FieldModelImpl acquireField ( String name ) { } @ Override public Map < String , ? extends FieldModel > fieldMap ( ) { } public boolean isScalar ( Class type ) { } @ Override public Set < Class > nestedModels ( ) { } @ Override public < N > DataValueModel < N > nestedModel ( Class < N > nClass ) { } @ Override public Class < T > type ( ) { } static class FieldModelImpl < T > implements FieldModel < T > { private final String name ; private Method getter ; private Method setter ; private Method volatileGetter ; private Method orderedSetter ; private Digits digits ; private Range range ; private MaxSize maxSize ; private Group group ; private MaxSize indexSize ; private Method adder ; private Method atomicAdder ; private Method getUsing ; private Method cas ; private Method tryLockNanos ; private Method tryLock ; private Method busyLock ; private Method unlock ; private Method getterAt ; private Method setterAt ; private Method volatileGetterAt ; private Method orderedSetterAt ; private Method sizeOf ; private boolean isArray = false ; private boolean isVolatile = false ; public FieldModelImpl ( String name ) { } public String name ( ) { } public boolean isArray ( ) { } @ Override public boolean isVolatile ( ) { } @ Override public void setVolatile ( boolean isVolatile ) { } public void getter ( Method getter ) { } public Method getter ( ) { } public void setter ( Method setter ) { } public Method setter ( ) { } public void volatileGetter ( Method volatileGetter ) { } public Method volatileGetter ( ) { } public void orderedSetter ( Method orderedSetter ) { this . orderedSetter = orderedSetter ; for ( Annotation a : orderedSetter . getParameterAnnotations ( ) [ 0 ] ) { if ( a instanceof Digits ) digits = ( ( Digits ) ( a ) ) ; if ( a instanceof Range ) range = ( ( Range ) ( a ) ) ; if ( a instanceof MaxSize ) maxSize = ( ( MaxSize ) ( a ) ) ; } <START_BUG> for ( Annotation a : setter . getAnnotations ( ) ) { <END_BUG> if ( a instanceof Group ) group = ( ( Group ) ( a ) ) ; } } public Method orderedSetter ( ) { } @ Override public Class < T > type ( ) { } public void adder ( Method method ) { } public Method adder ( ) { } @ Override public int heapSize ( ) { } @ Override public int nativeSize ( ) { } @ Override public Digits digits ( ) { } @ Override public Range range ( ) { } @ Override public MaxSize size ( ) { } @ Override public Group group ( ) { } @ Override public String toString ( ) { } public void atomicAdder ( Method method ) { } public void getUsing ( Method method ) { } public Method atomicAdder ( ) { } public void cas ( Method method ) { } public Method cas ( ) { } public void sizeOf ( Method method ) { } public Method sizeOf ( ) { } public void tryLockNanos ( Method method ) { } public Method tryLockNanos ( ) { } public void tryLock ( Method tryLock ) { } public Method tryLock ( ) { } public void busyLock ( Method busyLock ) { } public Method busyLock ( ) { } public void unlock ( Method unlock ) { } public Method unlock ( ) { } public void indexSize ( MaxSize indexSize ) { } public MaxSize indexSize ( ) { } public void indexedGetter ( Method indexedGetter ) { } public Method indexedGetter ( ) { } public void indexedSetter ( Method indexedSetter ) { } public Method indexedSetter ( ) { } public void indexAnnotations ( Method method ) { } public void volatileIndexedGetter ( Method volatileIndexedGetter ) { } public Method volatileIndexedGetter ( ) { } public void orderedIndexedSetter ( Method orderedIndexedSetter ) { }

Fix:
for ( Annotation a : orderedSetter . getAnnotations ( ) ) {