public Stack<Integer> computeChoices(Stack<Integer> choices, boolean AF, boolean AD, boolean AA, boolean AI){        
        Stack<Integer> moves = new Stack<>();
        Compass realNorth=north;
        while(!choices.isEmpty()){
            north=realNorth;
            int result = choices.pop();
            rotate(result);
            int index = getIndexExploredStates(0);
            if(result==2){
                if(!AA) moves.push(2);
                continue;
            }
            if(knownNode(nextMove())){
                myGraph.SearchNode(nextMove().getX(), nextMove().getY()).addNeighbor(actualNode, 1);
                myGraph.SearchNode(nextMove().getX(), nextMove().getY()).setExploredNeighboors((index+2)%4, true);
                actualNode.setExploredNeighboors(index, true);
            }else{
                boolean AgentP=false;
                if(result==0) AgentP=AF;
                if(result==1) AgentP=AD;
                if(result==3) AgentP=AI;
                if(!AgentP) moves.push(result);
            }
        }
        north=realNorth;
        return moves;
    }