@Override
 public List<DiscreteGameState> availableStates() {
   List<Position> availableMoves = board.getOpenPositions();
   List<DiscreteGameState> availableStates =
       new ArrayList<DiscreteGameState>(availableMoves.size());
   for (Position move : availableMoves) {
     TicTacToeGameState newState = new TicTacToeGameState(this);
     newState.play(move.getRow(), move.getCol());
     newState.switchPlayer();
     availableStates.add(newState);
   }
   return availableStates;
 }