@staticmethod
def estimateNextState(state, move):
    """
		Estimate what the game state will be after the given move
		is applied to the given state.

		:param state:  Current game state (GameState)
		:param move:  Move to play
		:return:  New state (GameState)
		:raises  RuntimeError: if move is not possible
		:raises NotImplementedError: if child does not override this function
		"""
    raise NotImplementedError()
