Program: 39176
Project: 39176
Buggy source:
@SuppressWarnings({"String_Node_Str","String_Node_Str"}) public static <T extends BoardGameState>ArrayList<Pair<double[],double[]>> playGame(BoardGame<T> bg,BoardGamePlayer<T>[] players,List<BoardGameFitnessFunction<T>> fit){
  bg.reset();
  if (CommonConstants.watch && bg instanceof TwoDimensionalBoardGame) {
    if (view != null) {
      view.panel.dispose();
      view=null;
    }
    view=MMNEAT.boardGameViewer;
  }
  while (!bg.isGameOver()) {
    if (CommonConstants.watch && bg instanceof TwoDimensionalBoardGame) {
      view.reset((TwoDimensionalBoardGameState)bg.getCurrentState());
    }
    if (Parameters.parameters.booleanParameter("String_Node_Str")) {
      System.out.print("String_Node_Str");
      MiscUtil.waitForReadStringAndEnterKeyPress();
    }
    int playIndex=bg.getCurrentPlayer();
    bg.move(players[bg.getCurrentPlayer()]);
    for (    BoardGameFitnessFunction fitFunct : fit) {
      fitFunct.updateFitness(bg.getCurrentState(),playIndex);
    }
  }
  if (CommonConstants.watch && bg instanceof TwoDimensionalBoardGame) {
    view.reset((TwoDimensionalBoardGameState)bg.getCurrentState());
    if (Parameters.parameters.booleanParameter("String_Node_Str")) {
      System.out.print("String_Node_Str");
      MiscUtil.waitForReadStringAndEnterKeyPress();
    }
  }
  ArrayList<Pair<double[],double[]>> scoring=new ArrayList<Pair<double[],double[]>>(bg.getNumPlayers());
  for (int i=0; i < players.length; i++) {
    double[] otherScores=new double[fit.size() - 1];
    for (int j=1; j < fit.size(); j++) {
      otherScores[j - 1]=fit.get(j).getFitness();
    }
    Pair<double[],double[]> evalResults=new Pair<double[],double[]>(new double[]{fit.get(0).getFitness()},otherScores);
    scoring.add(evalResults);
  }
  return scoring;
}

Fixed version (ground truth):
@SuppressWarnings({"String_Node_Str","String_Node_Str"}) public static <T extends BoardGameState>ArrayList<Pair<double[],double[]>> playGame(BoardGame<T> bg,BoardGamePlayer<T>[] players,List<BoardGameFitnessFunction<T>> fit){
  bg.reset();
  if (CommonConstants.watch && bg instanceof TwoDimensionalBoardGame) {
    view=MMNEAT.boardGameViewer;
  }
  while (!bg.isGameOver()) {
    if (CommonConstants.watch && bg instanceof TwoDimensionalBoardGame) {
      view.reset((TwoDimensionalBoardGameState)bg.getCurrentState());
    }
    if (Parameters.parameters.booleanParameter("String_Node_Str")) {
      System.out.print("String_Node_Str");
      MiscUtil.waitForReadStringAndEnterKeyPress();
    }
    int playIndex=bg.getCurrentPlayer();
    bg.move(players[bg.getCurrentPlayer()]);
    for (    BoardGameFitnessFunction fitFunct : fit) {
      fitFunct.updateFitness(bg.getCurrentState(),playIndex);
    }
  }
  if (CommonConstants.watch && bg instanceof TwoDimensionalBoardGame) {
    view.reset((TwoDimensionalBoardGameState)bg.getCurrentState());
    if (Parameters.parameters.booleanParameter("String_Node_Str")) {
      System.out.print("String_Node_Str");
      MiscUtil.waitForReadStringAndEnterKeyPress();
    }
  }
  ArrayList<Pair<double[],double[]>> scoring=new ArrayList<Pair<double[],double[]>>(bg.getNumPlayers());
  for (int i=0; i < players.length; i++) {
    double[] otherScores=new double[fit.size() - 1];
    for (int j=1; j < fit.size(); j++) {
      otherScores[j - 1]=fit.get(j).getFitness();
    }
    Pair<double[],double[]> evalResults=new Pair<double[],double[]>(new double[]{fit.get(0).getFitness()},otherScores);
    scoring.add(evalResults);
  }
  return scoring;
}