Program: 31716
Project: 31716
Buggy source:
@Override public void write(DataOutput out) throws IOException {
  out.writeBoolean(this.isNumeric);
  out.writeInt(this.columnNum);
  out.writeDouble(this.max);
  out.writeDouble(this.min);
  out.writeDouble(this.sum);
  out.writeDouble(this.squaredSum);
  out.writeDouble(this.tripleSum);
  out.writeDouble(this.quarticSum);
  out.writeLong(this.missingCount);
  out.writeLong(this.totalCount);
  out.writeInt(this.binCountPos.length);
  for (int i=0; i < this.binCountPos.length; i++) {
    out.writeLong(this.binCountPos[i]);
  }
  out.writeInt(this.binCountNeg.length);
  for (int i=0; i < this.binCountNeg.length; i++) {
    out.writeLong(this.binCountNeg[i]);
  }
  out.writeInt(this.binWeightPos.length);
  for (int i=0; i < this.binWeightPos.length; i++) {
    out.writeDouble(this.binWeightPos[i]);
  }
  out.writeInt(this.binWeightNeg.length);
  for (int i=0; i < this.binWeightNeg.length; i++) {
    out.writeDouble(this.binWeightNeg[i]);
  }
  if (this.isNumeric) {
    out.writeInt(this.binBoundaries.size());
    for (int i=0; i < this.binBoundaries.size(); i++) {
      out.writeDouble(this.binBoundaries.get(i));
    }
    if (this.xMultiY != null) {
      out.writeInt(this.xMultiY.length);
      for (      double d : this.xMultiY) {
        out.writeDouble(d);
      }
    }
 else {
      out.writeInt(0);
    }
  }
 else {
    out.writeInt(this.binCategories.size());
    for (int i=0; i < this.binCategories.size(); i++) {
      String bin=this.binCategories.get(i);
      byte[] bytes=bin.getBytes(Charset.forName("String_Node_Str"));
      out.writeInt(bytes.length);
      for (int j=0; j < bytes.length; j++) {
        out.writeByte(bytes[j]);
      }
    }
  }
  this.cfiw.write(out);
}

Fixed version (ground truth):
@Override public void write(DataOutput out) throws IOException {
  out.writeBoolean(this.isNumeric);
  out.writeInt(this.columnNum);
  out.writeDouble(this.max);
  out.writeDouble(this.min);
  out.writeDouble(this.sum);
  out.writeDouble(this.squaredSum);
  out.writeDouble(this.tripleSum);
  out.writeDouble(this.quarticSum);
  out.writeLong(this.missingCount);
  out.writeLong(this.totalCount);
  out.writeInt(this.binCountPos.length);
  for (int i=0; i < this.binCountPos.length; i++) {
    out.writeLong(this.binCountPos[i]);
  }
  out.writeInt(this.binCountNeg.length);
  for (int i=0; i < this.binCountNeg.length; i++) {
    out.writeLong(this.binCountNeg[i]);
  }
  out.writeInt(this.binWeightPos.length);
  for (int i=0; i < this.binWeightPos.length; i++) {
    out.writeDouble(this.binWeightPos[i]);
  }
  out.writeInt(this.binWeightNeg.length);
  for (int i=0; i < this.binWeightNeg.length; i++) {
    out.writeDouble(this.binWeightNeg[i]);
  }
  if (this.isNumeric) {
    out.writeInt(this.binBoundaries.size());
    for (int i=0; i < this.binBoundaries.size(); i++) {
      out.writeDouble(this.binBoundaries.get(i));
    }
    if (this.xMultiY != null) {
      out.writeInt(this.xMultiY.length);
      for (      double d : this.xMultiY) {
        out.writeDouble(d);
      }
    }
 else {
      out.writeInt(0);
    }
  }
 else {
    out.writeInt(this.binCategories.size());
    for (int i=0; i < this.binCategories.size(); i++) {
      String bin=this.binCategories.get(i);
      byte[] bytes=bin.getBytes(Charset.forName("String_Node_Str"));
      out.writeInt(bytes.length);
      for (int j=0; j < bytes.length; j++) {
        out.writeByte(bytes[j]);
      }
    }
  }
  this.cfiw.write(out);
  out.writeBoolean(this.isEmpty);
}