Program: 172775
Project: 172775
Buggy source:
@Override public List<Integer> filter(final IFilter filter) throws IOException {
switch (filter.getFilterType()) {
case NUMBER:
    NumberFilter numberFilter=(NumberFilter)filter;
  Float setNumber;
try {
  setNumber=Float.valueOf(numberFilter.getNumberObject().getFloat());
}
 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;
Float setMin;
Float setMax;
try {
setMin=Float.valueOf(numberRangeFilter.getMinObject().getFloat());
setMax=Float.valueOf(numberRangeFilter.getMaxObject().getFloat());
}
 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;
  Float setNumber;
try {
  setNumber=Float.valueOf(numberFilter.getNumberObject().getFloat());
}
 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;
Float setMin;
Float setMax;
try {
setMin=Float.valueOf(numberRangeFilter.getMinObject().getFloat());
setMax=Float.valueOf(numberRangeFilter.getMaxObject().getFloat());
}
 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;
}
}