Program: 90277
Project: 90277
Buggy source:
/** 
 * Deserialize.
 * @param in the DataInput stream
 * @throws IOException Signals that an I/O exception has occurred.
 */
public void deserialize(DataInput in) throws IOException {
  this.clear();
  final int cookie=Integer.reverseBytes(in.readInt());
  if (cookie != SERIAL_COOKIE && cookie != SERIAL_COOKIE_NO_RUNCONTAINER)   throw new IOException("String_Node_Str");
  this.size=Integer.reverseBytes(in.readInt());
  if ((this.array == null) || (this.array.length < this.size))   this.array=new Element[this.size];
  int[] bitmapOfRunContainers=null;
  if (cookie == SERIAL_COOKIE) {
    System.out.println("String_Node_Str");
    bitmapOfRunContainers=new int[(size + 31) / 32];
    for (int i=0; i < bitmapOfRunContainers.length; ++i)     bitmapOfRunContainers[i]=Integer.reverseBytes(in.readInt());
  }
  final short keys[]=new short[this.size];
  final int cardinalities[]=new int[this.size];
  final boolean isBitmap[]=new boolean[this.size];
  for (int k=0; k < this.size; ++k) {
    keys[k]=Short.reverseBytes(in.readShort());
    cardinalities[k]=1 + (0xFFFF & Short.reverseBytes(in.readShort()));
    isBitmap[k]=cardinalities[k] > ArrayContainer.DEFAULT_MAX_SIZE;
    if (bitmapOfRunContainers != null && (bitmapOfRunContainers[k / 32] & (1 << (k % 32))) != 0) {
      System.out.println("String_Node_Str" + k + "String_Node_Str");
      isBitmap[k]=false;
    }
  }
  in.skipBytes(this.size * 4);
  for (int k=0; k < this.size; ++k) {
    Container val;
    if (isBitmap[k]) {
      final long[] bitmapArray=new long[BitmapContainer.MAX_CAPACITY / 64];
      for (int l=0; l < bitmapArray.length; ++l) {
        bitmapArray[l]=Long.reverseBytes(in.readLong());
      }
      val=new BitmapContainer(bitmapArray,cardinalities[k]);
    }
 else     if (bitmapOfRunContainers != null && ((bitmapOfRunContainers[k / 32] & (1 << (k % 32))) != 0)) {
      int nbrruns=Util.toIntUnsigned(Short.reverseBytes(in.readShort()));
      final short lengthsAndValues[]=new short[2 * nbrruns];
      for (int j=0; j < 2 * nbrruns; ++j)       lengthsAndValues[j]=Short.reverseBytes(in.readShort());
      val=new RunContainer(lengthsAndValues);
      System.out.println("String_Node_Str" + nbrruns + "String_Node_Str"+ k);
    }
 else {
      final short[] shortArray=new short[cardinalities[k]];
      for (int l=0; l < shortArray.length; ++l) {
        shortArray[l]=Short.reverseBytes(in.readShort());
      }
      val=new ArrayContainer(shortArray);
    }
    this.array[k]=new Element(keys[k],val);
  }
}

Fixed version (ground truth):
/** 
 * Deserialize.
 * @param in the DataInput stream
 * @throws IOException Signals that an I/O exception has occurred.
 */
public void deserialize(DataInput in) throws IOException {
  this.clear();
  final int cookie=Integer.reverseBytes(in.readInt());
  if (cookie != SERIAL_COOKIE && cookie != SERIAL_COOKIE_NO_RUNCONTAINER)   throw new IOException("String_Node_Str");
  this.size=Integer.reverseBytes(in.readInt());
  if ((this.array == null) || (this.array.length < this.size))   this.array=new Element[this.size];
  int[] bitmapOfRunContainers=null;
  if (cookie == SERIAL_COOKIE) {
    bitmapOfRunContainers=new int[(size + 31) / 32];
    for (int i=0; i < bitmapOfRunContainers.length; ++i)     bitmapOfRunContainers[i]=Integer.reverseBytes(in.readInt());
  }
  final short keys[]=new short[this.size];
  final int cardinalities[]=new int[this.size];
  final boolean isBitmap[]=new boolean[this.size];
  for (int k=0; k < this.size; ++k) {
    keys[k]=Short.reverseBytes(in.readShort());
    cardinalities[k]=1 + (0xFFFF & Short.reverseBytes(in.readShort()));
    isBitmap[k]=cardinalities[k] > ArrayContainer.DEFAULT_MAX_SIZE;
    if (bitmapOfRunContainers != null && (bitmapOfRunContainers[k / 32] & (1 << (k % 32))) != 0) {
      isBitmap[k]=false;
    }
  }
  in.skipBytes(this.size * 4);
  for (int k=0; k < this.size; ++k) {
    Container val;
    if (isBitmap[k]) {
      final long[] bitmapArray=new long[BitmapContainer.MAX_CAPACITY / 64];
      for (int l=0; l < bitmapArray.length; ++l) {
        bitmapArray[l]=Long.reverseBytes(in.readLong());
      }
      val=new BitmapContainer(bitmapArray,cardinalities[k]);
    }
 else     if (bitmapOfRunContainers != null && ((bitmapOfRunContainers[k / 32] & (1 << (k % 32))) != 0)) {
      int nbrruns=Util.toIntUnsigned(Short.reverseBytes(in.readShort()));
      final short lengthsAndValues[]=new short[2 * nbrruns];
      for (int j=0; j < 2 * nbrruns; ++j)       lengthsAndValues[j]=Short.reverseBytes(in.readShort());
      val=new RunContainer(lengthsAndValues);
    }
 else {
      final short[] shortArray=new short[cardinalities[k]];
      for (int l=0; l < shortArray.length; ++l) {
        shortArray[l]=Short.reverseBytes(in.readShort());
      }
      val=new ArrayContainer(shortArray);
    }
    this.array[k]=new Element(keys[k],val);
  }
}