Program: 11162
Project: 11162
Buggy source:
private static ReplaceValues parseReplaceValues(Option option,String arg) throws IllegalOptionValueException {
  ReplaceValues replaceValues=new ReplaceValues();
  replaceValues.replaceMinMaxs=new MinMaxArray[2];
  String[] groups=arg.split("String_Node_Str");
  if (groups.length != 6)   throw new IllegalOptionValueException(option,arg);
  String[] min1=groups[0].split("String_Node_Str");
  String[] max1=groups[1].split("String_Node_Str");
  String[] min2=groups[2].split("String_Node_Str");
  String[] max2=groups[3].split("String_Node_Str");
  String[] replace=groups[4].split("String_Node_Str");
  String[] otherwise=groups[5].split("String_Node_Str");
  if (!(min1.length == max1.length && min1.length == min2.length && min1.length == max2.length && min1.length == replace.length && min1.length == otherwise.length))   throw new IllegalOptionValueException(option,arg);
  int length=min1.length;
  replaceValues.valueCount=length;
  replaceValues.replaceMinMaxs[0]=new MinMaxArray(length);
  replaceValues.replaceMinMaxs[1]=new MinMaxArray(length);
  replaceValues.replace=new NullableNumberArray(length);
  replaceValues.otherwise=new NullableNumberArray(length);
  try {
    Double[] min1D=stringsToDoubles(min1);
    Double[] max1D=stringsToDoubles(max1);
    Double[] min2D=stringsToDoubles(min2);
    Double[] max2D=stringsToDoubles(max2);
    Double[] replaceD=stringsToDoubles(replace);
    Double[] otherwiseD=stringsToDoubles(otherwise);
    replaceValues.replaceMinMaxs[0].setMinMaxDoubles(min1D,max1D);
    replaceValues.replaceMinMaxs[1].setMinMaxDoubles(min2D,max2D);
    replaceValues.replace.setDoubles(replaceD);
    replaceValues.otherwise.setDoubles(otherwiseD);
  }
 catch (  Exception e) {
    throw new IllegalOptionValueException(option,arg);
  }
  return replaceValues;
}

Fixed version (ground truth):
private static ReplaceValues parseReplaceValues(Option option,String arg) throws IllegalOptionValueException {
  ReplaceValues replaceValues=new ReplaceValues();
  replaceValues.replaceMinMaxs=new MinMaxArray[2];
  String[] groups=arg.split("String_Node_Str");
  if (groups.length != 6)   throw new IllegalOptionValueException(option,arg);
  for (int i=0; i < groups.length; i++)   groups[i]=groups[i] + "String_Node_Str";
  String[] min1=groups[0].split("String_Node_Str");
  String[] max1=groups[1].split("String_Node_Str");
  String[] min2=groups[2].split("String_Node_Str");
  String[] max2=groups[3].split("String_Node_Str");
  String[] replace=groups[4].split("String_Node_Str");
  String[] otherwise=groups[5].split("String_Node_Str");
  if (!(min1.length == max1.length && min1.length == min2.length && min1.length == max2.length && min1.length == replace.length && min1.length == otherwise.length))   throw new IllegalOptionValueException(option,arg);
  int length=min1.length;
  replaceValues.valueCount=length;
  replaceValues.replaceMinMaxs[0]=new MinMaxArray(length);
  replaceValues.replaceMinMaxs[1]=new MinMaxArray(length);
  replaceValues.replace=new NullableNumberArray(length);
  replaceValues.otherwise=new NullableNumberArray(length);
  try {
    Double[] min1D=stringsToDoubles(min1);
    Double[] max1D=stringsToDoubles(max1);
    Double[] min2D=stringsToDoubles(min2);
    Double[] max2D=stringsToDoubles(max2);
    Double[] replaceD=stringsToDoubles(replace);
    Double[] otherwiseD=stringsToDoubles(otherwise);
    replaceValues.replaceMinMaxs[0].setMinMaxDoubles(min1D,max1D);
    replaceValues.replaceMinMaxs[1].setMinMaxDoubles(min2D,max2D);
    replaceValues.replace.setDoubles(replaceD);
    replaceValues.otherwise.setDoubles(otherwiseD);
  }
 catch (  Exception e) {
    throw new IllegalOptionValueException(option,arg);
  }
  return replaceValues;
}