@Override
    public SetMultimap<Position, Position> getAllAvailableMoves(Player activePlayer, Board board) {
        SetMultimap<Position, Position> allMoves = getAllAvailableCaptures(activePlayer, board);
        if (!allMoves.isEmpty()) {
            return allMoves;
        }

        for (int i = 1; i < board.getSize(); i++) {
            for (int j = 1; j < board.getSize(); j++) {
                Position startPos = new Position(i, j);

                if (activePlayer == Player.PLAYER_ONE
                        && (board.getFieldAt(i, j) == Board.WHITE_KING
                        || board.getFieldAt(i, j) == Board.WHITE_REGULAR_PIECE)) {
                    allMoves.putAll(startPos,
                            getAvailableMoves(startPos, board));
                } else if (activePlayer == Player.PLAYER_TWO
                        && (board.getFieldAt(i, j) == Board.BLACK_KING
                        || board.getFieldAt(i, j) == Board.BLACK_REGULAR_PIECE)) {
                    allMoves.putAll(startPos,
                            getAvailableMoves(startPos, board));
                }
            }
        }
        return allMoves;
    }