Program: 85979
Project: 85979
Buggy source:
private Predicate getPredicate(Expression fieldExp,String operator,Object value,String type){
  Object o;
switch (type) {
case "String_Node_Str":
    o=value;
  break;
case "String_Node_Str":
try {
  o=new SimpleDateFormat("String_Node_Str").parse((String)value);
}
 catch (ParseException e) {
  throw new IllegalArgumentException();
}
break;
case "String_Node_Str":
try {
o=Double.parseDouble((String)value);
}
 catch (NumberFormatException e) {
throw new IllegalArgumentException();
}
break;
default :
o=value;
break;
}
switch (operator) {
case "String_Node_Str":
return cb.equal(fieldExp,o);
case "String_Node_Str":
return cb.equal(fieldExp,o).not();
case "String_Node_Str":
return cb.like(fieldExp,"String_Node_Str" + o + "String_Node_Str");
case "String_Node_Str":
return cb.like(fieldExp,"String_Node_Str" + o + "String_Node_Str").not();
case "String_Node_Str":
return cb.like(fieldExp,o + "String_Node_Str");
case "String_Node_Str":
return cb.like(fieldExp,o + "String_Node_Str").not();
case "String_Node_Str":
return cb.like(fieldExp,"String_Node_Str" + o);
case "String_Node_Str":
return cb.like(fieldExp,"String_Node_Str" + o).not();
case "String_Node_Str":
if (type.equals("String_Node_Str")) {
return cb.lessThan(fieldExp,(Date)o);
}
 else if (type.equals("String_Node_Str")) {
return cb.lessThan(fieldExp,(Double)o);
}
break;
case "String_Node_Str":
if (type.equals("String_Node_Str")) {
return cb.lessThanOrEqualTo(fieldExp,(Date)o);
}
 else if (type.equals("String_Node_Str")) {
return cb.lessThanOrEqualTo(fieldExp,(Double)o);
}
break;
case "String_Node_Str":
if (type.equals("String_Node_Str")) {
return cb.greaterThan(fieldExp,(Date)o);
}
 else if (type.equals("String_Node_Str")) {
return cb.greaterThan(fieldExp,(Double)o);
}
break;
case "String_Node_Str":
if (type.equals("String_Node_Str")) {
return cb.greaterThanOrEqualTo(fieldExp,(Date)o);
}
 else if (type.equals("String_Node_Str")) {
return cb.greaterThanOrEqualTo(fieldExp,(Double)o);
}
break;
default :
break;
}
throw new IllegalArgumentException();
}

Fixed version (ground truth):
private Predicate getPredicate(Expression fieldExp,String operator,Object value,String type){
  Object o;
switch (type) {
case "String_Node_Str":
    o=value;
  break;
case "String_Node_Str":
try {
  o=new SimpleDateFormat("String_Node_Str").parse((String)value);
}
 catch (ParseException e) {
  throw new IllegalArgumentException();
}
break;
case "String_Node_Str":
try {
if (value != null) {
o=Double.parseDouble((String)value);
}
 else {
o="String_Node_Str";
}
}
 catch (NumberFormatException e) {
throw new IllegalArgumentException();
}
break;
default :
o=value;
break;
}
switch (operator) {
case "String_Node_Str":
return cb.equal(fieldExp,o);
case "String_Node_Str":
return cb.equal(fieldExp,o).not();
case "String_Node_Str":
return cb.like(fieldExp,"String_Node_Str" + o + "String_Node_Str");
case "String_Node_Str":
return cb.like(fieldExp,"String_Node_Str" + o + "String_Node_Str").not();
case "String_Node_Str":
return cb.like(fieldExp,o + "String_Node_Str");
case "String_Node_Str":
return cb.like(fieldExp,o + "String_Node_Str").not();
case "String_Node_Str":
return cb.like(fieldExp,"String_Node_Str" + o);
case "String_Node_Str":
return cb.like(fieldExp,"String_Node_Str" + o).not();
case "String_Node_Str":
if (type.equals("String_Node_Str")) {
return cb.lessThan(fieldExp,(Date)o);
}
 else if (type.equals("String_Node_Str")) {
return cb.lessThan(fieldExp,(Double)o);
}
break;
case "String_Node_Str":
if (type.equals("String_Node_Str")) {
return cb.lessThanOrEqualTo(fieldExp,(Date)o);
}
 else if (type.equals("String_Node_Str")) {
return cb.lessThanOrEqualTo(fieldExp,(Double)o);
}
break;
case "String_Node_Str":
if (type.equals("String_Node_Str")) {
return cb.greaterThan(fieldExp,(Date)o);
}
 else if (type.equals("String_Node_Str")) {
return cb.greaterThan(fieldExp,(Double)o);
}
break;
case "String_Node_Str":
if (type.equals("String_Node_Str")) {
return cb.greaterThanOrEqualTo(fieldExp,(Date)o);
}
 else if (type.equals("String_Node_Str")) {
return cb.greaterThanOrEqualTo(fieldExp,(Double)o);
}
break;
default :
break;
}
throw new IllegalArgumentException();
}