Program: 177575
Project: 177575
Buggy source:
@Test public void testArray(){
  Random rand=new Random();
  for (int x=0; x < 16; x++) {
    for (int z=0; z < 16; z++) {
      for (int y=0; y < 16; y++) {
        short id=(short)(rand.nextInt());
        short data=(short)(((rand.nextInt() & 0x3) != 0) ? (0) : (rand.nextInt()));
        Integer auxData=(((rand.nextInt() & 0x3) != 0) ? (null) : (rand.nextInt()));
        set(x,y,z,id,data,auxData);
      }
    }
  }
  System.out.println("String_Node_Str");
  BlockFullState<Integer> fullData=new BlockFullState<Integer>();
  for (int x=0; x < 16; x++) {
    for (int z=0; z < 16; z++) {
      for (int y=0; y < 16; y++) {
        check(x,y,z,fullData);
      }
    }
  }
  System.out.println("String_Node_Str");
  for (int i=0; i < 16384; i++) {
    short id=(short)(rand.nextInt());
    short data=(short)(((rand.nextInt() & 0x3) != 0) ? (0) : (rand.nextInt()));
    Integer auxData=(((rand.nextInt() & 0x3) != 0) ? (null) : (rand.nextInt()));
    int x=rand.nextInt() & 0xF;
    int y=rand.nextInt() & 0xF;
    int z=rand.nextInt() & 0xF;
    set(x,y,z,id,data,auxData);
    check(x,y,z,fullData);
  }
  System.out.println("String_Node_Str");
  for (int x=15; x >= 0; x--) {
    for (int y=15; y >= 0; y--) {
      for (int z=15; z >= 0; z--) {
        check(x,y,z,fullData);
      }
    }
  }
}

Fixed version (ground truth):
@Test public void testArray(){
  Random rand=new Random();
  for (int x=0; x < 16; x++) {
    for (int z=0; z < 16; z++) {
      for (int y=0; y < 16; y++) {
        short id=(short)(rand.nextInt());
        short data=(short)(((rand.nextInt() & 0x3) != 0) ? (0) : (rand.nextInt()));
        Integer auxData=(((rand.nextInt() & 0x3) != 0) ? (null) : (rand.nextInt()));
        set(x,y,z,id,data,auxData);
      }
    }
  }
  System.out.println("String_Node_Str");
  BlockFullState<Integer> fullData=new BlockFullState<Integer>();
  for (int x=0; x < 16; x++) {
    for (int z=0; z < 16; z++) {
      for (int y=0; y < 16; y++) {
        check(x,y,z,fullData);
      }
    }
  }
  System.out.println("String_Node_Str");
  for (int i=0; i < 32768; i++) {
    short id=(short)(rand.nextInt());
    short data=(short)(((rand.nextInt() & 0x3) != 0) ? (0) : (rand.nextInt()));
    Integer auxData=(((rand.nextInt() & 0x3) != 0) ? (null) : (rand.nextInt()));
    int x=rand.nextInt() & 0xF;
    int y=rand.nextInt() & 0xF;
    int z=rand.nextInt() & 0xF;
    if (rand.nextBoolean()) {
      set(x,y,z,id,data,auxData);
    }
 else {
      compareAndSet(x,y,z,(short)id,(short)data,auxData,rand.nextBoolean(),rand);
    }
    check(x,y,z,fullData);
  }
  System.out.println("String_Node_Str");
  for (int x=15; x >= 0; x--) {
    for (int y=15; y >= 0; y--) {
      for (int z=15; z >= 0; z--) {
        check(x,y,z,fullData);
      }
    }
  }
  int entries=0;
  for (int x=15; x >= 0; x--) {
    for (int y=15; y >= 0; y--) {
      for (int z=15; z >= 0; z--) {
        fullData=store.getFullData(x,y,z,null);
        if (fullData.getAuxData() != null || fullData.getData() != 0 || (fullData.getId() & 0xC000) == 0xC000) {
          entries++;
        }
      }
    }
  }
  int actualEntries=store.getEntries();
  assertTrue("String_Node_Str" + entries + "String_Node_Str"+ actualEntries+ "String_Node_Str",entries == actualEntries);
  System.out.println("String_Node_Str" + store.getSize());
}