Program: 49996
Project: 49996
Buggy source:
/** 
 * executorThread
 */
public void execute(Request request){
  CMap cmap=maps.get(request.name);
  if (request.operation == CONCURRENT_MAP_GET) {
    Object value=cmap.loader.load(toObject(request.key));
    if (value != null) {
      setIndexValues(request,value);
      request.value=toData(value);
    }
  }
 else   if (request.operation == CONCURRENT_MAP_PUT || request.operation == CONCURRENT_MAP_PUT_IF_ABSENT) {
    Object value=toObject(request.value);
    cmap.store.store(toObject(request.key),value);
    Record storedRecord=cmap.getRecord(request);
    storedRecord.setLastStoredTime(System.currentTimeMillis());
  }
 else   if (request.operation == CONCURRENT_MAP_REMOVE) {
    Object key=toObject(request.key);
    if (cmap.loader != null && request.value == null) {
      Object removedObject=cmap.loader.load(key);
      if (removedObject == null) {
        return;
      }
 else {
        request.response=toData(removedObject);
      }
    }
    cmap.store.delete(key);
  }
 else   if (request.operation == CONCURRENT_MAP_EVICT) {
    cmap.store.store(toObject(request.key),toObject(request.value));
    Record storedRecord=cmap.getRecord(request);
    storedRecord.setLastStoredTime(System.currentTimeMillis());
    request.response=Boolean.TRUE;
  }
 else   if (request.operation == CONCURRENT_MAP_MERGE) {
    boolean success=false;
    Object winner=null;
    if (cmap.mergePolicy != null) {
      Record existingRecord=cmap.getRecord(request);
      DataRecordEntry existing=(existingRecord == null) ? null : new DataRecordEntry(existingRecord);
      DataRecordEntry newEntry=(DataRecordEntry)toObject(request.value);
      Object key=newEntry.getKey();
      if (key != null && newEntry.hasValue()) {
        winner=cmap.mergePolicy.merge(cmap.getName(),newEntry,existing);
        if (winner != null) {
          success=true;
          if (cmap.writeDelayMillis == 0 && cmap.store != null) {
            Object winnerObject=(winner instanceof Data) ? toObject((Data)winner) : winner;
            cmap.store.store(key,winnerObject);
            existingRecord.setLastStoredTime(System.currentTimeMillis());
            success=(request.response == null);
          }
        }
      }
    }
    if (success) {
      request.value=toData(winner);
      request.response=Boolean.TRUE;
    }
 else {
      request.value=null;
      request.response=Boolean.FALSE;
    }
  }
}

Fixed version (ground truth):
/** 
 * executorThread
 */
public void execute(Request request){
  CMap cmap=maps.get(request.name);
  if (request.operation == CONCURRENT_MAP_GET) {
    Object value=cmap.loader.load(toObject(request.key));
    if (value != null) {
      setIndexValues(request,value);
      request.value=toData(value);
    }
  }
 else   if (request.operation == CONCURRENT_MAP_PUT || request.operation == CONCURRENT_MAP_PUT_IF_ABSENT) {
    Object value=toObject(request.value);
    cmap.store.store(toObject(request.key),value);
    Record storedRecord=cmap.getRecord(request);
    if (storedRecord != null) {
      storedRecord.setLastStoredTime(System.currentTimeMillis());
    }
  }
 else   if (request.operation == CONCURRENT_MAP_REMOVE) {
    Object key=toObject(request.key);
    if (cmap.loader != null && request.value == null) {
      Object removedObject=cmap.loader.load(key);
      if (removedObject == null) {
        return;
      }
 else {
        request.response=toData(removedObject);
      }
    }
    cmap.store.delete(key);
  }
 else   if (request.operation == CONCURRENT_MAP_EVICT) {
    cmap.store.store(toObject(request.key),toObject(request.value));
    Record storedRecord=cmap.getRecord(request);
    storedRecord.setLastStoredTime(System.currentTimeMillis());
    request.response=Boolean.TRUE;
  }
 else   if (request.operation == CONCURRENT_MAP_MERGE) {
    boolean success=false;
    Object winner=null;
    if (cmap.mergePolicy != null) {
      Record existingRecord=cmap.getRecord(request);
      DataRecordEntry existing=(existingRecord == null) ? null : new DataRecordEntry(existingRecord);
      DataRecordEntry newEntry=(DataRecordEntry)toObject(request.value);
      Object key=newEntry.getKey();
      if (key != null && newEntry.hasValue()) {
        winner=cmap.mergePolicy.merge(cmap.getName(),newEntry,existing);
        if (winner != null) {
          success=true;
          if (cmap.writeDelayMillis == 0 && cmap.store != null) {
            Object winnerObject=(winner instanceof Data) ? toObject((Data)winner) : winner;
            cmap.store.store(key,winnerObject);
            existingRecord.setLastStoredTime(System.currentTimeMillis());
            success=(request.response == null);
          }
        }
      }
    }
    if (success) {
      request.value=toData(winner);
      request.response=Boolean.TRUE;
    }
 else {
      request.value=null;
      request.response=Boolean.FALSE;
    }
  }
}