public abstract AbstractGameState DoMoveOnState(AbstractGameState state, AbstractGameMove move);
public abstract AbstractGameState DoMove(AbstractGameMove move);