Program: 74466
Project: 74466
Buggy source:
/** 
 * define pattern and locale here
 * @param formatString
 */
public void applyPattern(String formatString){
  try {
    this.formatPattern=formatString;
    this.dateTimeFormat=null;
    this.dateFormat=null;
    this.timeFormat=null;
    if (formatString == null || UNFORMATTED.equals(formatString)) {
      formatPattern=UNFORMATTED;
      dateTimeFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.MEDIUM,com.ibm.icu.text.DateFormat.SHORT,locale);
      dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.MEDIUM,locale);
      timeFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.MEDIUM,locale);
      return;
    }
 else     if (formatString.equals(DATETIME_UNFORMATTED)) {
      dateTimeFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.MEDIUM,com.ibm.icu.text.DateFormat.SHORT,locale);
      return;
    }
 else     if (formatString.equals(DATE_UNFORMATTED)) {
      dateTimeFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.MEDIUM,locale);
      return;
    }
 else     if (formatString.equals(TIME_UNFORMATTED)) {
      dateTimeFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.MEDIUM,locale);
      return;
    }
    if (formatString.length() == 1) {
      char patternTemp=formatString.charAt(0);
switch (patternTemp) {
case 'G':
        dateTimeFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.LONG,com.ibm.icu.text.DateFormat.LONG,locale);
      dateFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.LONG,locale);
    timeFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.LONG,locale);
  return;
case 'D':
dateTimeFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.LONG,locale);
return;
case 'd':
dateTimeFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.SHORT,locale);
return;
case 'T':
dateTimeFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.LONG,locale);
return;
case 't':
dateTimeFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
case 'f':
dateTimeFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.LONG,com.ibm.icu.text.DateFormat.SHORT,locale);
return;
case 'F':
dateTimeFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.LONG,com.ibm.icu.text.DateFormat.LONG,locale);
return;
case 'i':
case 'I':
int timeForm=(patternTemp == 'i') ? com.ibm.icu.text.DateFormat.MEDIUM : com.ibm.icu.text.DateFormat.LONG;
timeFormat=com.ibm.icu.text.DateFormat.getTimeInstance(timeForm,locale);
com.ibm.icu.text.DateFormat factoryFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.SHORT,locale);
dateFormat=hackYear(factoryFormat);
factoryFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.SHORT,timeForm,locale);
dateTimeFormat=hackYear(factoryFormat);
return;
case 'g':
dateTimeFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.SHORT,com.ibm.icu.text.DateFormat.SHORT,locale);
return;
case 'M':
case 'm':
dateTimeFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
case 'R':
case 'r':
dateTimeFormat=new SimpleDateFormat("String_Node_Str",locale);
dateTimeFormat.setTimeZone(TimeZone.getTimeZone("String_Node_Str"));
return;
case 's':
dateTimeFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
case 'u':
dateTimeFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
case 'Y':
case 'y':
dateTimeFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
default :
dateTimeFormat=new SimpleDateFormat(formatString,locale);
return;
}
}
if (formatString.equals("String_Node_Str")) {
dateTimeFormat=com.ibm.icu.text.DateFormat.getDateTimeInstance(com.ibm.icu.text.DateFormat.LONG,com.ibm.icu.text.DateFormat.LONG,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateTimeFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.LONG,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateTimeFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.MEDIUM,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateTimeFormat=com.ibm.icu.text.DateFormat.getDateInstance(com.ibm.icu.text.DateFormat.SHORT,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateTimeFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.LONG,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateTimeFormat=com.ibm.icu.text.DateFormat.getTimeInstance(com.ibm.icu.text.DateFormat.MEDIUM,locale);
return;
}
if (formatString.equals("String_Node_Str")) {
dateTimeFormat=new SimpleDateFormat("String_Node_Str",locale);
return;
}
dateTimeFormat=new SimpleDateFormat(formatString,locale);
}
 catch (Exception e) {
logger.log(Level.WARNING,e.getMessage(),e);
}
}

Fixed version (ground truth):
public void applyPattern(String formatString){
  createPattern(formatString);
  applyTimeZone();
}