Program: 172774
Project: 172774
Buggy source:
@Override public List<Integer> filter(final IFilter filter) throws IOException {
switch (filter.getFilterType()) {
case NUMBER:
    NumberFilter numberFilter=(NumberFilter)filter;
  Double setNumber;
try {
  setNumber=Double.valueOf(numberFilter.getNumberObject().getDouble());
}
 catch (NumberFormatException e) {
  return null;
}
switch (numberFilter.getNumberFilterType()) {
case EQUAL:
if (0 < min.compareTo(setNumber) || max.compareTo(setNumber) < 0) {
  return new ArrayList<Integer>();
}
return null;
case LT:
if (0 <= min.compareTo(setNumber)) {
return new ArrayList<Integer>();
}
return null;
case LE:
if (0 < min.compareTo(setNumber)) {
return new ArrayList<Integer>();
}
return null;
case GT:
if (max.compareTo(setNumber) <= 0) {
return new ArrayList<Integer>();
}
return null;
case GE:
if (max.compareTo(setNumber) < 0) {
return new ArrayList<Integer>();
}
return null;
default :
return null;
}
case NUMBER_RANGE:
NumberRangeFilter numberRangeFilter=(NumberRangeFilter)filter;
Double setMin;
Double setMax;
try {
setMin=Double.valueOf(numberRangeFilter.getMinObject().getDouble());
setMax=Double.valueOf(numberRangeFilter.getMaxObject().getDouble());
}
 catch (NumberFormatException e) {
return null;
}
boolean minHasEquals=numberRangeFilter.isMinHasEquals();
boolean maxHasEquals=numberRangeFilter.isMaxHasEquals();
boolean invert=numberRangeFilter.isInvert();
if (minHasEquals && maxHasEquals) {
if ((min.compareTo(setMin) < 0 && 0 < max.compareTo(setMax)) != invert) {
return new ArrayList<Integer>();
}
return null;
}
 else if (minHasEquals) {
if ((min.compareTo(setMin) < 0 && 0 <= max.compareTo(setMax)) != invert) {
return new ArrayList<Integer>();
}
return null;
}
 else if (maxHasEquals) {
if ((min.compareTo(setMin) <= 0 && 0 < max.compareTo(setMax)) != invert) {
return new ArrayList<Integer>();
}
return null;
}
 else {
if ((min.compareTo(setMin) <= 0 && 0 <= max.compareTo(setMax)) != invert) {
return new ArrayList<Integer>();
}
return null;
}
default :
return null;
}
}

Fixed version (ground truth):
@Override public List<Integer> filter(final IFilter filter) throws IOException {
switch (filter.getFilterType()) {
case NUMBER:
    NumberFilter numberFilter=(NumberFilter)filter;
  Double setNumber;
try {
  setNumber=Double.valueOf(numberFilter.getNumberObject().getDouble());
}
 catch (NumberFormatException e) {
  return null;
}
switch (numberFilter.getNumberFilterType()) {
case EQUAL:
if (0 < min.compareTo(setNumber) || max.compareTo(setNumber) < 0) {
  return new ArrayList<Integer>();
}
return null;
case LT:
if (0 <= min.compareTo(setNumber)) {
return new ArrayList<Integer>();
}
return null;
case LE:
if (0 < min.compareTo(setNumber)) {
return new ArrayList<Integer>();
}
return null;
case GT:
if (max.compareTo(setNumber) <= 0) {
return new ArrayList<Integer>();
}
return null;
case GE:
if (max.compareTo(setNumber) < 0) {
return new ArrayList<Integer>();
}
return null;
default :
return null;
}
case NUMBER_RANGE:
NumberRangeFilter numberRangeFilter=(NumberRangeFilter)filter;
Double setMin;
Double setMax;
try {
setMin=Double.valueOf(numberRangeFilter.getMinObject().getDouble());
setMax=Double.valueOf(numberRangeFilter.getMaxObject().getDouble());
}
 catch (NumberFormatException e) {
return null;
}
boolean minHasEquals=numberRangeFilter.isMinHasEquals();
boolean maxHasEquals=numberRangeFilter.isMaxHasEquals();
boolean invert=numberRangeFilter.isInvert();
if (minHasEquals && maxHasEquals) {
if ((0 < min.compareTo(setMax) || max.compareTo(setMin) < 0) != invert) {
return new ArrayList<Integer>();
}
return null;
}
 else if (minHasEquals) {
if ((0 < min.compareTo(setMax) || max.compareTo(setMin) <= 0) != invert) {
return new ArrayList<Integer>();
}
return null;
}
 else if (maxHasEquals) {
if ((0 <= min.compareTo(setMax) || max.compareTo(setMin) < 0) != invert) {
return new ArrayList<Integer>();
}
return null;
}
 else {
if ((0 <= min.compareTo(setMax) || max.compareTo(setMin) <= 0) != invert) {
return new ArrayList<Integer>();
}
return null;
}
default :
return null;
}
}