Program: 90327
Project: 90327
Buggy source:
@Override public MappeableContainer not(final int firstOfRange,final int lastOfRange){
  if (firstOfRange > lastOfRange) {
    return clone();
  }
  int startIndex=BufferUtil.unsignedBinarySearch(content,0,cardinality,(short)firstOfRange);
  if (startIndex < 0)   startIndex=-startIndex - 1;
  int lastIndex=BufferUtil.unsignedBinarySearch(content,0,cardinality,(short)lastOfRange);
  if (lastIndex < 0)   lastIndex=-lastIndex - 2;
  final int currentValuesInRange=lastIndex - startIndex + 1;
  final int spanToBeFlipped=lastOfRange - firstOfRange + 1;
  final int newValuesInRange=spanToBeFlipped - currentValuesInRange;
  final int cardinalityChange=newValuesInRange - currentValuesInRange;
  final int newCardinality=cardinality + cardinalityChange;
  if (newCardinality >= DEFAULT_MAX_SIZE)   return toBitmapContainer().not(firstOfRange,lastOfRange);
  final MappeableArrayContainer answer=new MappeableArrayContainer(newCardinality);
  short[] sarray=answer.content.array();
  for (int i=0; i < startIndex; ++i)   sarray[i]=content.get(i);
  int outPos=startIndex;
  int inPos=startIndex;
  int valInRange=firstOfRange;
  for (; valInRange <= lastOfRange && inPos <= lastIndex; ++valInRange) {
    if ((short)valInRange != content.get(inPos))     sarray[outPos++]=(short)valInRange;
 else {
      ++inPos;
    }
  }
  for (; valInRange <= lastOfRange; ++valInRange) {
    answer.content.put(outPos++,(short)valInRange);
  }
  for (int i=lastIndex + 1; i < cardinality; ++i)   answer.content.put(outPos++,content.get(i));
  answer.cardinality=newCardinality;
  return answer;
}

Fixed version (ground truth):
@Override public MappeableContainer not(final int firstOfRange,final int lastOfRange){
  if (firstOfRange >= lastOfRange) {
    return clone();
  }
  int startIndex=BufferUtil.unsignedBinarySearch(content,0,cardinality,(short)firstOfRange);
  if (startIndex < 0)   startIndex=-startIndex - 1;
  int lastIndex=BufferUtil.unsignedBinarySearch(content,0,cardinality,(short)(lastOfRange - 1));
  if (lastIndex < 0)   lastIndex=-lastIndex - 2;
  final int currentValuesInRange=lastIndex - startIndex + 1;
  final int spanToBeFlipped=lastOfRange - firstOfRange;
  final int newValuesInRange=spanToBeFlipped - currentValuesInRange;
  final int cardinalityChange=newValuesInRange - currentValuesInRange;
  final int newCardinality=cardinality + cardinalityChange;
  if (newCardinality >= DEFAULT_MAX_SIZE)   return toBitmapContainer().not(firstOfRange,lastOfRange);
  final MappeableArrayContainer answer=new MappeableArrayContainer(newCardinality);
  short[] sarray=answer.content.array();
  for (int i=0; i < startIndex; ++i)   sarray[i]=content.get(i);
  int outPos=startIndex;
  int inPos=startIndex;
  int valInRange=firstOfRange;
  for (; valInRange < lastOfRange && inPos <= lastIndex; ++valInRange) {
    if ((short)valInRange != content.get(inPos))     sarray[outPos++]=(short)valInRange;
 else {
      ++inPos;
    }
  }
  for (; valInRange < lastOfRange; ++valInRange) {
    answer.content.put(outPos++,(short)valInRange);
  }
  for (int i=lastIndex + 1; i < cardinality; ++i)   answer.content.put(outPos++,content.get(i));
  answer.cardinality=newCardinality;
  return answer;
}