Buggy code:
public class FastDateParser implements Serializable , DateParser { private static final long serialVersionUID = 1L ; static final Locale JAPANESE_IMPERIAL = new Locale ( "ja" , "JP" , "JP" ) ; private final String pattern ; private final TimeZone timeZone ; private final Locale locale ; private transient Pattern parsePattern ; private transient FastDateParser . Strategy [ ] strategies ; private transient int thisYear ; private transient String currentFormatField ; private transient FastDateParser . Strategy nextStrategy ; protected FastDateParser ( final String pattern , final TimeZone timeZone , final Locale locale ) { } private void init ( ) { } @ Override public String getPattern ( ) { } @ Override public TimeZone getTimeZone ( ) { } @ Override public Locale getLocale ( ) { } Pattern getParsePattern ( ) { } @ Override public boolean equals ( final Object obj ) { } @ Override public int hashCode ( ) { } @ Override public String toString ( ) { } private void readObject ( final ObjectInputStream in ) throws IOException , ClassNotFoundException { } @ Override public Object parseObject ( final String source ) throws ParseException { } @ Override public Date parse ( final String source ) throws ParseException { } @ Override public Object parseObject ( final String source , final ParsePosition pos ) { } @ Override public Date parse ( final String source , final ParsePosition pos ) { } private static StringBuilder escapeRegex ( final StringBuilder regex , final String value , final boolean unquote ) { } private static Map < String , Integer > getDisplayNames ( final int field , final Calendar definingCalendar , final Locale locale ) { } int adjustYear ( final int twoDigitYear ) { } boolean isNextNumber ( ) { } int getFieldWidth ( ) { } private abstract static class Strategy { boolean isNumber ( ) { } void setCalendar ( final FastDateParser parser , final Calendar cal , final String value ) { } abstract boolean addRegex ( FastDateParser parser , StringBuilder regex ) { } } private static final Pattern formatPattern = Pattern . compile ( "D+|E+|F+|G+|H+|K+|M+|S+|W+|Z+|a+|d+|h+|k+|m+|s+|w+|y+|z+|''|'[^']++(''[^']*+)*+'|[^'A-Za-z]++" ) ; private FastDateParser . Strategy getStrategy ( String formatField , final Calendar definingCalendar ) { } @ SuppressWarnings ( "unchecked" ) private static ConcurrentMap < Locale , FastDateParser . Strategy > [ ] caches = new ConcurrentMap [ Calendar . FIELD_COUNT ] ; private static ConcurrentMap < Locale , FastDateParser . Strategy > getCache ( final int field ) { } private FastDateParser . Strategy getLocaleSpecificStrategy ( final int field , final Calendar definingCalendar ) { final ConcurrentMap < Locale , FastDateParser . Strategy > cache = FastDateParser . getCache ( field ) ; <START_BUG> FastDateParser . Strategy strategy = cache . get ( Integer . valueOf ( field ) ) ; <END_BUG> if ( strategy == null ) { strategy = ( field == ( Calendar . ZONE_OFFSET ) ) ? new FastDateParser . TimeZoneStrategy ( locale ) : new FastDateParser . TextStrategy ( field , definingCalendar , locale ) ; final FastDateParser . Strategy inCache = cache . putIfAbsent ( locale , strategy ) ; if ( inCache != null ) { return inCache ; } } return strategy ; } private static class CopyQuotedStrategy extends FastDateParser . Strategy { private final String formatField ; CopyQuotedStrategy ( final String formatField ) { } @ Override boolean isNumber ( ) { } @ Override boolean addRegex ( final FastDateParser parser , final StringBuilder regex ) { } } private static class TextStrategy extends FastDateParser . Strategy { private final int field ; private final Map < String , Integer > keyValues ; TextStrategy ( final int field , final Calendar definingCalendar , final Locale locale ) { } @ Override boolean addRegex ( final FastDateParser parser , final StringBuilder regex ) { } @ Override void setCalendar ( final FastDateParser parser , final Calendar cal , final String value ) { } } private static class NumberStrategy extends FastDateParser . Strategy { private final int field ; NumberStrategy ( final int field ) { } @ Override boolean isNumber ( ) { } @ Override boolean addRegex ( final FastDateParser parser , final StringBuilder regex ) { } @ Override void setCalendar ( final FastDateParser parser , final Calendar cal , final String value ) { } int modify ( final int iValue ) { } } private static final FastDateParser . Strategy ABBREVIATED_YEAR_STRATEGY = new FastDateParser . NumberStrategy ( Calendar . YEAR ) { @ Override void setCalendar ( final FastDateParser parser , final Calendar cal , final String value ) { } } ; private static class TimeZoneStrategy extends FastDateParser . Strategy { private final String validTimeZoneChars ; private final SortedMap < String , TimeZone > tzNames = new TreeMap < String , TimeZone > ( String . CASE_INSENSITIVE_ORDER ) ; TimeZoneStrategy ( final Locale locale ) { } @ Override boolean addRegex ( final FastDateParser parser , final StringBuilder regex ) { } @ Override void setCalendar ( final FastDateParser parser , final Calendar cal , final String value ) { } } private static final FastDateParser . Strategy NUMBER_MONTH_STRATEGY = new FastDateParser . NumberStrategy ( Calendar . MONTH ) { @ Override int modify ( final int iValue ) { } } ; private static final FastDateParser . Strategy LITERAL_YEAR_STRATEGY = new FastDateParser . NumberStrategy ( Calendar . YEAR ) ; private static final FastDateParser . Strategy WEEK_OF_YEAR_STRATEGY = new FastDateParser . NumberStrategy ( Calendar . WEEK_OF_YEAR ) ; private static final FastDateParser . Strategy WEEK_OF_MONTH_STRATEGY = new FastDateParser . NumberStrategy ( Calendar . WEEK_OF_MONTH ) ; private static final FastDateParser . Strategy DAY_OF_YEAR_STRATEGY = new FastDateParser . NumberStrategy ( Calendar . DAY_OF_YEAR ) ; private static final FastDateParser . Strategy DAY_OF_MONTH_STRATEGY = new FastDateParser . NumberStrategy ( Calendar . DAY_OF_MONTH ) ; private static final FastDateParser . Strategy DAY_OF_WEEK_IN_MONTH_STRATEGY = new FastDateParser . NumberStrategy ( Calendar . DAY_OF_WEEK_IN_MONTH ) ;

Fix:
FastDateParser . Strategy strategy = cache . get ( locale ) ;