Program: 29062
Project: 29062
Buggy source:
static void unitTest_1() throws Exception {
  FIFOEJBObjectCache cache=new FIFOEJBObjectCache("String_Node_Str");
  cache.init(512,0,0,(float)1.0,null);
  int maxCount=14;
  ArrayList keys=new ArrayList();
  for (int i=0; i < maxCount; i++) {
    keys.add("String_Node_Str" + i);
  }
  for (int i=0; i < maxCount; i++) {
    String key=(String)keys.get(i);
    System.out.println("String_Node_Str" + key + "String_Node_Str"+ key+ "String_Node_Str"+ ((i % 2) == 0)+ "String_Node_Str");
    cache.put(key,key,((i % 2) == 0));
  }
  System.out.println("String_Node_Str");
  cache.print();
  System.out.println("String_Node_Str");
  for (int i=0; i < maxCount; i++) {
    String key=(String)keys.get(i);
    cache.get(key,((i % 2) == 1));
  }
  System.out.println("String_Node_Str");
  cache.print();
  System.out.println("String_Node_Str");
  cache.put("String_Node_Str","String_Node_Str",true);
  cache.put("String_Node_Str","String_Node_Str",true);
  cache.get("String_Node_Str",true);
  cache.put("String_Node_Str","String_Node_Str");
  System.out.println("String_Node_Str");
  cache.print();
  System.out.println("String_Node_Str");
  for (int i=0; i < maxCount; i++) {
    String key=(String)keys.get(i);
    if (cache.remove(key) == null) {
      throw new RuntimeException("String_Node_Str");
    }
  }
  Object k15=cache.remove("String_Node_Str");
  Object k16_1=cache.remove("String_Node_Str");
  Object k16_2=cache.remove("String_Node_Str");
  Object k17=cache.remove("String_Node_Str");
  if (k15 == null) {
    System.out.println("String_Node_Str");
  }
  if (k16_1 != null) {
    System.out.println("String_Node_Str");
  }
  if (k16_2 == null) {
    System.out.println("String_Node_Str");
  }
  if (k17 == null) {
    System.out.println("String_Node_Str");
  }
  for (int i=0; i < maxCount; i+=2) {
    String key=(String)keys.get(i);
    cache.put(key,key,(i % 4) == 0);
  }
  cache.print();
  for (int i=0; i < maxCount; i+=2) {
    String key=(String)keys.get(i);
    cache.get(key,true);
  }
  cache.print();
  for (int i=1; i < maxCount; i+=2) {
    String key=(String)keys.get(i);
    cache.put(key,key,(i % 9) == 0);
  }
  cache.print();
}

Fixed version (ground truth):
static void unitTest_1() throws Exception {
  FIFOEJBObjectCache cache=new FIFOEJBObjectCache("String_Node_Str");
  cache.init(512,0,0,(float)1.0,null);
  int maxCount=14;
  ArrayList keys=new ArrayList();
  for (int i=0; i < maxCount; i++) {
    keys.add("String_Node_Str" + i);
  }
  for (int i=0; i < maxCount; i++) {
    String key=(String)keys.get(i);
    System.out.println("String_Node_Str" + key + "String_Node_Str"+ key+ "String_Node_Str"+ ((i % 2) == 0)+ "String_Node_Str");
    cache.put(key,key,((i % 2) == 0));
  }
  System.out.println("String_Node_Str");
  cache.print();
  System.out.println("String_Node_Str");
  for (int i=0; i < maxCount; i++) {
    String key=(String)keys.get(i);
    cache.get(key,((i % 2) != 0));
  }
  System.out.println("String_Node_Str");
  cache.print();
  System.out.println("String_Node_Str");
  cache.put("String_Node_Str","String_Node_Str",true);
  cache.put("String_Node_Str","String_Node_Str",true);
  cache.get("String_Node_Str",true);
  cache.put("String_Node_Str","String_Node_Str");
  System.out.println("String_Node_Str");
  cache.print();
  System.out.println("String_Node_Str");
  for (int i=0; i < maxCount; i++) {
    String key=(String)keys.get(i);
    if (cache.remove(key) == null) {
      throw new RuntimeException("String_Node_Str");
    }
  }
  Object k15=cache.remove("String_Node_Str");
  Object k16_1=cache.remove("String_Node_Str");
  Object k16_2=cache.remove("String_Node_Str");
  Object k17=cache.remove("String_Node_Str");
  if (k15 == null) {
    System.out.println("String_Node_Str");
  }
  if (k16_1 != null) {
    System.out.println("String_Node_Str");
  }
  if (k16_2 == null) {
    System.out.println("String_Node_Str");
  }
  if (k17 == null) {
    System.out.println("String_Node_Str");
  }
  for (int i=0; i < maxCount; i+=2) {
    String key=(String)keys.get(i);
    cache.put(key,key,(i % 4) == 0);
  }
  cache.print();
  for (int i=0; i < maxCount; i+=2) {
    String key=(String)keys.get(i);
    cache.get(key,true);
  }
  cache.print();
  for (int i=1; i < maxCount; i+=2) {
    String key=(String)keys.get(i);
    cache.put(key,key,(i % 9) == 0);
  }
  cache.print();
}