class McRunnable implements Runnable {

	public Color playout(boolean mercy) {
		// The first move is played normally, updating the fancy hashes
		if (board.getTurn() >= coords.getMaxMovesPerGame()) {
			// Playout ran out of moves, probably due to superko
			return VACANT;
		}
		if (board.getPasses() < 2) {
			selectAndPlayOneMove(false);
			fancyHashes[board.getTurn()] = board.getFancyHash();
		}
		if (board.getPasses() >= 2) {
			// Game ended
			return scorer.winner();
		}
		if (mercy) {
			final Color mercyWinner = mercyObserver.mercyWinner();
			if (mercyWinner != null) {
				// One player has far more stones on the board
				return mercyWinner;
			}
		}
		// All subsequent moves are played fast
		do {
			if (board.getTurn() >= coords.getMaxMovesPerGame()) {
				// Playout ran out of moves, probably due to superko
				return VACANT;
			}
			if (board.getPasses() < 2) {
				selectAndPlayOneMove(true);
			}
			if (board.getPasses() >= 2) {
				// Game ended
				return scorer.winner();
			}
			if (mercy) {
				final Color mercyWinner = mercyObserver.mercyWinner();
				if (mercyWinner != null) {
					// One player has far more stones on the board
					return mercyWinner;
				}
			}
		} while (true);
	}

	public  McRunnable(Player player, CopiableStructure stuff);

}