public void search(ChessBoard board, Player player) { itsTable = new PositionHashTable(); itsMoves.clear(); itsPlayer = player; itsBoard = board; Collection moves = getAllMoves(player); for (Iterator i = moves.iterator(); i.hasNext(); ) { AbstractMove move = (AbstractMove) i.next(); move.getPiece().findMoves_safe(); move = player.movePiece(move); itsBoard.recordPosition(); String positionCode = itsBoard.getPositionCode() + player.getColor(); int score = examineMove(move, player, itsSearchQuality, positionCode); move.setScore(score); itsMoves.add(move); itsBoard.removeLastPosition(); player.reverseMove(move); } }