Buggy code:
public class FilterSet extends DataType implements Cloneable { public static class Filter { String token ; String value ; public Filter ( String token , String value ) { } public Filter ( ) { } public void setToken ( String token ) { } public void setValue ( String value ) { } public String getToken ( ) { } public String getValue ( ) { } } public class FiltersFile { public FiltersFile ( ) { } public void setFile ( File file ) { } } public static class OnMissing extends EnumeratedAttribute { private static final String [ ] VALUES = new String [ ] { "fail" , "warn" , "ignore" } ; public static final FilterSet . OnMissing FAIL = new FilterSet . OnMissing ( "fail" ) ; public static final FilterSet . OnMissing WARN = new FilterSet . OnMissing ( "warn" ) ; public static final FilterSet . OnMissing IGNORE = new FilterSet . OnMissing ( "ignore" ) ; private static final int FAIL_INDEX = 0 ; private static final int WARN_INDEX = 1 ; private static final int IGNORE_INDEX = 2 ; public OnMissing ( ) { } public OnMissing ( String value ) { } public String [ ] getValues ( ) { } } public static final String DEFAULT_TOKEN_START = "@" ; public static final String DEFAULT_TOKEN_END = "@" ; private String startOfToken = FilterSet . DEFAULT_TOKEN_START ; private String endOfToken = FilterSet . DEFAULT_TOKEN_END ; private Vector passedTokens ; private boolean duplicateToken = false ; private boolean recurse = true ; private Hashtable filterHash = null ; private Vector filtersFiles = new Vector ( ) ; private FilterSet . OnMissing onMissingFiltersFile = FilterSet . OnMissing . FAIL ; private boolean readingFiles = false ; private int recurseDepth = 0 ; private Vector filters = new Vector ( ) ; public FilterSet ( ) { } protected FilterSet ( FilterSet filterset ) { } protected synchronized Vector getFilters ( ) { if ( isReference ( ) ) { return getRef ( ) . getFilters ( ) ; } dieOnCircularReference ( ) ; if ( ! ( readingFiles ) ) { readingFiles = true ; final int size = filtersFiles . size ( ) ; <START_BUG> for ( int i = 0 , sz = size ; i < sz ; i ++ ) { <END_BUG> readFiltersFromFile ( ( ( File ) ( filtersFiles . get ( i ) ) ) ) ; } filtersFiles . clear ( ) ; readingFiles = false ; } return filters ; } protected FilterSet getRef ( ) { } public synchronized Hashtable getFilterHash ( ) { } public void setFiltersfile ( File filtersFile ) throws BuildException { } public void setBeginToken ( String startOfToken ) { } public String getBeginToken ( ) { } public void setEndToken ( String endOfToken ) { } public String getEndToken ( ) { } public void setRecurse ( boolean recurse ) { } public boolean isRecurse ( ) { } public synchronized void readFiltersFromFile ( File filtersFile ) throws BuildException { } public synchronized String replaceTokens ( String line ) { } public synchronized void addFilter ( FilterSet . Filter filter ) { } public FilterSet . FiltersFile createFiltersfile ( ) { } public synchronized void addFilter ( String token , String value ) { } public synchronized void addConfiguredFilterSet ( FilterSet filterSet ) { } public synchronized boolean hasFilters ( ) { } public synchronized Object clone ( ) throws BuildException { } public void setOnMissingFiltersFile ( FilterSet . OnMissing onMissingFiltersFile ) { } public FilterSet . OnMissing getOnMissingFiltersFile ( ) { } private synchronized String iReplaceTokens ( String line ) { } private synchronized String replaceTokens ( String line , String parent ) throws BuildException { } private void handleMissingFile ( String message ) { } }

Fix:
for ( int i = 0 ; i < size ; i ++ ) {