private static Coin getCorrectCoin(ChessBoard board, String san, List<Coin> v) throws Exception {
        if (v.size() == 1) {
            return v.get(0);
        }
        int file = getStartingFile(san);
        int rank = 0;
        if (file != -1) {
            for (int i = 0; i < v.size(); i++) {
                if (v.get(i).getFile() != file) {
                    v.remove(i);
                }
            }
            if (v.size() == 1) {
                return v.get(0);
            }
            rank = getStartingRank(san);
            return board.getCoinAt(Position.getPosition(rank, file));
        } else {
            rank = getStartingRank(san);
        }

        for (int i = 0; i < v.size(); i++) {
            if (v.get(i).getRank() != rank) {
                v.remove(i);
            }
        }
        if (v.size() == 1) {
            return v.get(0);
        }
        throw new Exception("Not Contain valid information to represent a Move");
    }