public AIDecision RequestMove(Fuego fuego, AiGameInformation gameInformation)
        {
            var action = FuegoAction.ThatReturnsAiDecision(() => TrueRequestMove(fuego, gameInformation));

            EnqueueAction(action);
            return(action.GetAiDecisionResult());
        }
        public AIDecision GetIsolatedHint(Fuego fuego, AiGameInformation gameInformation)
        {
            var action = FuegoAction.ThatReturnsAiDecision(() =>
            {
                TrueInitialize(gameInformation);
                return(TrueRequestMove(fuego, gameInformation));
            });

            EnqueueAction(action);
            return(action.GetAiDecisionResult());
        }
        public AIDecision GetHint(Fuego fuego, AiGameInformation gameInformation)
        {
            var action = FuegoAction.ThatReturnsAiDecision(() =>
            {
                var result = TrueRequestMove(fuego, gameInformation);
                UndoOneMove();
                return(result);
            });

            EnqueueAction(action);
            return(action.GetAiDecisionResult());
        }