@Override
	public boolean equals(Object obj) {
		if (this == obj) return true;
		if (getClass() != obj.getClass()) return false;
		final AbstractBoard other = (AbstractBoard) obj;
		if (gameOver != other.gameOver) return false;
		if (currentPlayer == null) {
			if (other.currentPlayer != null) return false;
		} else if (!currentPlayer.equals(other.currentPlayer)) return false;
		if (gameContext == null) {
			if (other.gameContext != null) return false;
		} else if (!gameContext.equals(other.gameContext)) return false;
		return true;
	}