Program: 172779
Project: 172779
Buggy source:
@Override public boolean canBlockSkip(final IFilter filter){
switch (filter.getFilterType()) {
case NUMBER:
    NumberFilter numberFilter=(NumberFilter)filter;
  byte setNumber;
try {
  setNumber=numberFilter.getNumberObject().getByte();
}
 catch (NumberFormatException|IOException e) {
  return false;
}
switch (numberFilter.getNumberFilterType()) {
case EQUAL:
if (setNumber < min || max < setNumber) {
  return true;
}
return false;
case LT:
if (setNumber <= min) {
return true;
}
return false;
case LE:
if (setNumber < min) {
return true;
}
return false;
case GT:
if (max <= setNumber) {
return true;
}
return false;
case GE:
if (max < setNumber) {
return true;
}
return false;
default :
return false;
}
case NUMBER_RANGE:
NumberRangeFilter numberRangeFilter=(NumberRangeFilter)filter;
byte setMin;
byte setMax;
try {
setMin=numberRangeFilter.getMinObject().getByte();
setMax=numberRangeFilter.getMaxObject().getByte();
}
 catch (NumberFormatException|IOException e) {
return false;
}
boolean minHasEquals=numberRangeFilter.isMinHasEquals();
boolean maxHasEquals=numberRangeFilter.isMaxHasEquals();
boolean invert=numberRangeFilter.isInvert();
if (minHasEquals && maxHasEquals) {
if ((min < setMin && setMax < max) != invert) {
return true;
}
return false;
}
 else if (minHasEquals) {
if ((min < setMin && setMax <= max) != invert) {
return true;
}
return false;
}
 else if (maxHasEquals) {
if ((min <= setMin && setMax < max) != invert) {
return true;
}
return false;
}
 else {
if ((min <= setMin && setMax <= max) != invert) {
return true;
}
return false;
}
default :
return false;
}
}

Fixed version (ground truth):
@Override public boolean canBlockSkip(final IFilter filter){
switch (filter.getFilterType()) {
case NUMBER:
    NumberFilter numberFilter=(NumberFilter)filter;
  byte setNumber;
try {
  setNumber=numberFilter.getNumberObject().getByte();
}
 catch (NumberFormatException|IOException e) {
  return false;
}
switch (numberFilter.getNumberFilterType()) {
case EQUAL:
if (setNumber < min || max < setNumber) {
  return true;
}
return false;
case LT:
if (setNumber <= min) {
return true;
}
return false;
case LE:
if (setNumber < min) {
return true;
}
return false;
case GT:
if (max <= setNumber) {
return true;
}
return false;
case GE:
if (max < setNumber) {
return true;
}
return false;
default :
return false;
}
case NUMBER_RANGE:
NumberRangeFilter numberRangeFilter=(NumberRangeFilter)filter;
byte setMin;
byte setMax;
try {
setMin=numberRangeFilter.getMinObject().getByte();
setMax=numberRangeFilter.getMaxObject().getByte();
}
 catch (NumberFormatException|IOException e) {
return false;
}
boolean minHasEquals=numberRangeFilter.isMinHasEquals();
boolean maxHasEquals=numberRangeFilter.isMaxHasEquals();
boolean invert=numberRangeFilter.isInvert();
if (minHasEquals && maxHasEquals) {
if ((setMax < min || max < setMin) != invert) {
return true;
}
return false;
}
 else if (minHasEquals) {
if ((setMax < min || max <= setMin) != invert) {
return true;
}
return false;
}
 else if (maxHasEquals) {
if ((setMax <= min || max < setMin) != invert) {
return true;
}
return false;
}
 else {
if ((setMax <= min || max <= setMin) != invert) {
return true;
}
return false;
}
default :
return false;
}
}