Program: 31126
Project: 31126
Buggy source:
public static void parseIntervalEx(CharSequence seq,int lo,int lim,int position,LongList out) throws ParserException {
  int pos[]=new int[3];
  int p=-1;
  for (int i=lo; i < lim; i++) {
    if (seq.charAt(i) == ';') {
      if (p > 1) {
        throw QueryError.$(position,"String_Node_Str");
      }
      pos[++p]=i;
    }
  }
switch (p) {
case -1:
    try {
      Dates.parseInterval(seq,lo,lim,out);
      break;
    }
 catch (    NumericException ignore) {
    }
  try {
    long millis=Dates.tryParse(seq,lo,lim);
    out.add(millis);
    out.add(millis);
    break;
  }
 catch (  NumericException e) {
    throw QueryError.$(position,"String_Node_Str");
  }
case 0:
parseRange(seq,lo,pos[0],lim,position,out);
break;
case 2:
int period;
try {
period=Numbers.parseInt(seq,pos[1] + 1,pos[2] - 1);
}
 catch (NumericException e) {
throw QueryError.$(position,"String_Node_Str");
}
int count;
try {
count=Numbers.parseInt(seq,pos[2] + 1,seq.length());
}
 catch (NumericException e) {
throw QueryError.$(position,"String_Node_Str");
}
parseRange(seq,lo,pos[0],pos[1],position,out);
char type=seq.charAt(pos[2] - 1);
switch (type) {
case 'y':
addYearIntervals(period,count,out);
break;
case 'M':
addMonthInterval(period,count,out);
break;
case 'h':
addMillisInterval(period * Dates.HOUR_MILLIS,count,out);
break;
case 'm':
addMillisInterval(period * Dates.MINUTE_MILLIS,count,out);
break;
case 's':
addMillisInterval(period * Dates.SECOND_MILLIS,count,out);
break;
case 'd':
addMillisInterval(period * Dates.DAY_MILLIS,count,out);
break;
default :
throw QueryError.$(position,"String_Node_Str" + type + "String_Node_Str"+ (p - 1));
}
break;
default :
throw QueryError.$(position,"String_Node_Str");
}
}

Fixed version (ground truth):
public static void parseIntervalEx(CharSequence seq,int lo,int lim,int position,LongList out) throws ParserException {
  int pos[]=new int[3];
  int p=-1;
  for (int i=lo; i < lim; i++) {
    if (seq.charAt(i) == ';') {
      if (p > 1) {
        throw QueryError.$(position,"String_Node_Str");
      }
      pos[++p]=i;
    }
  }
switch (p) {
case -1:
    try {
      Dates.parseInterval(seq,lo,lim,out);
      break;
    }
 catch (    NumericException ignore) {
    }
  try {
    long millis=Dates.tryParse(seq,lo,lim);
    append(out,millis,millis);
    break;
  }
 catch (  NumericException e) {
    throw QueryError.$(position,"String_Node_Str");
  }
case 0:
parseRange(seq,lo,pos[0],lim,position,out);
break;
case 2:
int period;
try {
period=Numbers.parseInt(seq,pos[1] + 1,pos[2] - 1);
}
 catch (NumericException e) {
throw QueryError.$(position,"String_Node_Str");
}
int count;
try {
count=Numbers.parseInt(seq,pos[2] + 1,seq.length());
}
 catch (NumericException e) {
throw QueryError.$(position,"String_Node_Str");
}
parseRange(seq,lo,pos[0],pos[1],position,out);
char type=seq.charAt(pos[2] - 1);
switch (type) {
case 'y':
addYearIntervals(period,count,out);
break;
case 'M':
addMonthInterval(period,count,out);
break;
case 'h':
addMillisInterval(period * Dates.HOUR_MILLIS,count,out);
break;
case 'm':
addMillisInterval(period * Dates.MINUTE_MILLIS,count,out);
break;
case 's':
addMillisInterval(period * Dates.SECOND_MILLIS,count,out);
break;
case 'd':
addMillisInterval(period * Dates.DAY_MILLIS,count,out);
break;
default :
throw QueryError.$(position,"String_Node_Str" + type + "String_Node_Str"+ (p - 1));
}
break;
default :
throw QueryError.$(position,"String_Node_Str");
}
}