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