Program: 93870
Project: 93870
Buggy source:
public SegmentedCacheImpl(OHCacheBuilder<K,V> builder){
  long capacity=builder.getCapacity();
  if (capacity <= 0L)   throw new IllegalArgumentException("String_Node_Str");
  double cuTrigger=builder.getCleanUpTriggerFree();
  long cleanUpTriggerFree;
  if (cuTrigger < 0d) {
    if (capacity < 8L * ONE_GIGABYTE)     cleanUpTriggerFree=(long)(.125d * capacity);
 else     if (capacity < 16L * ONE_GIGABYTE)     cleanUpTriggerFree=(long)(.10d * capacity);
 else     cleanUpTriggerFree=(long)(.05d * capacity);
  }
 else {
    if (cuTrigger >= 1d)     throw new IllegalArgumentException("String_Node_Str" + String.format("String_Node_Str",cuTrigger));
    cuTrigger*=capacity;
    cleanUpTriggerFree=(long)cuTrigger;
  }
  int segments=builder.getSegmentCount();
  if (segments <= 0)   segments=Runtime.getRuntime().availableProcessors() * 2;
  segments=OffHeapMap.roundUpToPowerOf2(segments);
  maps=new OffHeapMap[segments];
  for (int i=0; i < segments; i++)   maps[i]=new OffHeapMap(builder,capacity / segments,cleanUpTriggerFree / segments);
  int bitNum=bitNum(segments) - 1;
  this.segmentShift=64 - bitNum;
  this.segmentMask=((long)segments - 1) << segmentShift;
  double mes=builder.getMaxEntrySize();
  long maxEntrySize;
  if (mes <= 0d || mes >= 1d)   maxEntrySize=capacity / segments / 128;
 else   maxEntrySize=(long)(mes * capacity / segments);
  this.maxEntrySize=maxEntrySize;
  this.statisticsEnabled=builder.isStatisticsEnabled();
  this.keySerializer=builder.getKeySerializer();
  if (keySerializer == null)   throw new NullPointerException("String_Node_Str");
  this.valueSerializer=builder.getValueSerializer();
  if (valueSerializer == null)   throw new NullPointerException("String_Node_Str");
}

Fixed version (ground truth):
public SegmentedCacheImpl(OHCacheBuilder<K,V> builder){
  long capacity=builder.getCapacity();
  if (capacity <= 0L)   throw new IllegalArgumentException("String_Node_Str");
  double cuTrigger=builder.getCleanUpTriggerFree();
  long cleanUpTriggerFree;
  if (cuTrigger < 0d) {
    if (capacity < 8L * ONE_GIGABYTE)     cleanUpTriggerFree=(long)(.125d * capacity);
 else     if (capacity < 16L * ONE_GIGABYTE)     cleanUpTriggerFree=(long)(.10d * capacity);
 else     cleanUpTriggerFree=(long)(.05d * capacity);
  }
 else {
    if (cuTrigger >= 1d)     throw new IllegalArgumentException("String_Node_Str" + String.format("String_Node_Str",cuTrigger));
    cuTrigger*=capacity;
    cleanUpTriggerFree=(long)cuTrigger;
  }
  int segments=builder.getSegmentCount();
  if (segments <= 0)   segments=Runtime.getRuntime().availableProcessors() * 2;
  segments=OffHeapMap.roundUpToPowerOf2(segments);
  maps=new OffHeapMap[segments];
  for (int i=0; i < segments; i++)   maps[i]=new OffHeapMap(builder,capacity / segments,cleanUpTriggerFree / segments);
  int bitNum=bitNum(segments) - 1;
  this.segmentShift=64 - bitNum;
  this.segmentMask=((long)segments - 1) << segmentShift;
  double mes=builder.getMaxEntrySize();
  long maxEntrySize;
  if (mes <= 0d || mes >= 1d)   maxEntrySize=capacity / segments / 128;
 else   maxEntrySize=(long)(mes * capacity / segments);
  this.maxEntrySize=maxEntrySize;
  this.keySerializer=builder.getKeySerializer();
  if (keySerializer == null)   throw new NullPointerException("String_Node_Str");
  this.valueSerializer=builder.getValueSerializer();
  if (valueSerializer == null)   throw new NullPointerException("String_Node_Str");
}