Program: 39186
Project: 39186
Buggy source:
@Test public void testPossibleBoardGameStates(){
  Set<CheckersState> startSet=start.possibleBoardGameStates(start);
  Set<CheckersState> startTest=new HashSet<CheckersState>();
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,E,E,B,E,B,E,B},{B,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,E,E,B,E,B,E,B},{E,E,B,E,E,E,E,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,B,E,E,E,B,E,B},{E,E,B,E,E,E,E,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,B,E,E,E,B,E,B},{E,E,E,E,B,E,E,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,B,E,B,E,E,E,B},{E,E,E,E,B,E,E,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,B,E,B,E,E,E,B},{E,E,E,E,E,E,B,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,B,E,B,E,B,E,E},{E,E,E,E,E,E,B,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  for (  CheckersState state : startSet) {
    assertTrue(startTest.contains(state));
  }
  Set<CheckersState> test1Set=test1.possibleBoardGameStates(test1);
  Set<CheckersState> test1Test=new HashSet<CheckersState>();
  test1Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,BK,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,RK,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E}},1,new ArrayList<Integer>()));
  test1Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,E,E,BK,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,RK,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E}},1,new ArrayList<Integer>()));
  test1Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,BK,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,RK,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E}},1,new ArrayList<Integer>()));
  test1Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,BK,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,RK,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E}},1,new ArrayList<Integer>()));
  for (  CheckersState state : test1Set) {
    assertTrue(test1Test.contains(state));
  }
  Set<CheckersState> test2Set=test2.possibleBoardGameStates(test2);
  Set<CheckersState> test2Test=new HashSet<CheckersState>();
  test2Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,B,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E}},1,new ArrayList<Integer>()));
  for (  CheckersState state : test2Set) {
    assertTrue(test2Test.contains(state));
  }
  Set<CheckersState> test4Set=test4.possibleBoardGameStates(test4);
  Set<CheckersState> test4ATest=new HashSet<CheckersState>();
  test4ATest.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,B},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,B,E,E,E,E,E,E},{E,E,R,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E}},0,new ArrayList<Integer>()));
  for (  CheckersState state : test4Set) {
    assertTrue(test4ATest.contains(state));
  }
  test4.moveDoublePoint(new Point(2,3),new Point(3,2));
  test4Set=test4.possibleBoardGameStates(test4);
  Set<CheckersState> test4BTest=new HashSet<CheckersState>();
  test4BTest.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,B},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,B,E,E,E,E},{E,E,E,E,E,E,E,E}},1,new ArrayList<Integer>()));
  for (  CheckersState state : test4BTest) {
    assertTrue(test4Set.contains(state));
  }
  Set<CheckersState> test5Set=test5.possibleBoardGameStates(test5);
  Set<CheckersState> test5Test=new HashSet<CheckersState>();
  test5Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,R,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,R,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,BK,E}},1,new ArrayList<Integer>()));
  test5Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,R,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,R,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,BK,E,E,E}},1,new ArrayList<Integer>()));
  for (  CheckersState state : test5Set) {
    assertTrue(test5Test.contains(state));
  }
  Set<CheckersState> test6Set=test6.possibleBoardGameStates(test6);
  System.out.println("String_Node_Str" + test6Set.size() + "String_Node_Str"+ test6.endState());
  System.out.println("String_Node_Str" + test6.getWinners());
}

Fixed version (ground truth):
@Test public void testPossibleBoardGameStates(){
  Set<CheckersState> startSet=start.possibleBoardGameStates(start);
  Set<CheckersState> startTest=new HashSet<CheckersState>();
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,E,E,B,E,B,E,B},{B,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,E,E,B,E,B,E,B},{E,E,B,E,E,E,E,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,B,E,E,E,B,E,B},{E,E,B,E,E,E,E,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,B,E,E,E,B,E,B},{E,E,E,E,B,E,E,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,B,E,B,E,E,E,B},{E,E,E,E,B,E,E,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,B,E,B,E,E,E,B},{E,E,E,E,E,E,B,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  startTest.add(new CheckersState(new int[][]{{E,B,E,B,E,B,E,B},{B,E,B,E,B,E,B,E},{E,B,E,B,E,B,E,E},{E,E,E,E,E,E,B,E},{E,E,E,E,E,E,E,E},{R,E,R,E,R,E,R,E},{E,R,E,R,E,R,E,R},{R,E,R,E,R,E,R,E}},1,new ArrayList<Integer>()));
  for (  CheckersState state : startSet) {
    assertTrue(startTest.contains(state));
  }
  Set<CheckersState> test1Set=test1.possibleBoardGameStates(test1);
  Set<CheckersState> test1Test=new HashSet<CheckersState>();
  test1Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,BK,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,RK,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E}},1,new ArrayList<Integer>()));
  test1Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,E,E,BK,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,RK,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E}},1,new ArrayList<Integer>()));
  test1Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,BK,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,RK,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E}},1,new ArrayList<Integer>()));
  test1Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,BK,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,RK,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E}},1,new ArrayList<Integer>()));
  for (  CheckersState state : test1Set) {
    assertTrue(test1Test.contains(state));
  }
  Set<CheckersState> test2Set=test2.possibleBoardGameStates(test2);
  Set<CheckersState> test2Test=new HashSet<CheckersState>();
  test2Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,B,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E}},1,new ArrayList<Integer>()));
  for (  CheckersState state : test2Set) {
    assertTrue(test2Test.contains(state));
  }
  Set<CheckersState> test4Set=test4.possibleBoardGameStates(test4);
  Set<CheckersState> test4ATest=new HashSet<CheckersState>();
  test4ATest.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,B},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,B,E,E,E,E,E,E},{E,E,R,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E}},0,new ArrayList<Integer>()));
  for (  CheckersState state : test4Set) {
    assertTrue(test4ATest.contains(state));
  }
  test4.moveDoublePoint(new Point(2,3),new Point(3,2));
  test4Set=test4.possibleBoardGameStates(test4);
  Set<CheckersState> test4BTest=new HashSet<CheckersState>();
  test4BTest.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,B},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,B,E,E,E,E},{E,E,E,E,E,E,E,E}},1,new ArrayList<Integer>()));
  for (  CheckersState state : test4BTest) {
    assertTrue(test4Set.contains(state));
  }
  Set<CheckersState> test5Set=test5.possibleBoardGameStates(test5);
  Set<CheckersState> test5Test=new HashSet<CheckersState>();
  test5Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,R,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,R,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,BK,E}},1,new ArrayList<Integer>()));
  test5Test.add(new CheckersState(new int[][]{{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,R,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,R,E,E,E,E,E},{E,E,E,E,E,E,E,E},{E,E,E,E,BK,E,E,E}},1,new ArrayList<Integer>()));
  for (  CheckersState state : test5Set) {
    assertTrue(test5Test.contains(state));
  }
}